docbrown/spec/requests/api/v0/api_controller_spec.rb
Anna Buianova 7d053471f8
Rubocop fixes in spec/requests (#18946)
* Rubocop fixes in spec/requests

* Fixed spec/requests/api/v0/articles_spec.rb

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>
2023-01-12 19:10:16 +03:00

88 lines
3.2 KiB
Ruby

require "rails_helper"
# Subclass of v0::ApiController for testing
module Api
module V0
class TestsController < ApiController
def index; end
end
end
end
RSpec.describe "Api::V0::ApiController" do
let(:path) { "/api/tests" }
before do
# Dynamically add a route to our testing V0::ApiController subclass
Rails.application.routes.draw do
namespace :api, defaults: { format: "json" } do
scope module: :v0 do
resources :tests
end
end
end
end
after do
# Clean up the route we added!
Rails.application.reload_routes!
end
context "when API V1 is requested" do
context "when request header is v0 and does not include an api key" do
let(:headers) { { Accept: "application/v0+json" } }
it "responds with a Warning header with code 299" do
get path, headers: headers
expect(response).to have_http_status(:success)
# rubocop:disable Layout/LineLength
expect(response.headers["Warning"])
.to eq("299 - This endpoint is part of the V0 (beta) API. To start using the V1 endpoints add the `Accept` header and set it to `application/vnd.forem.api-v1+json`. Visit https://developers.forem.com/api for more information.")
# rubocop:enable Layout/LineLength
end
end
context "when request header is v0 and includes an empty api key" do
let(:headers) { { Accept: "application/v0+json", "api-key": nil } }
it "responds with a Warning header with code 299" do
get path, headers: headers
expect(response).to have_http_status(:success)
# rubocop:disable Layout/LineLength
expect(response.headers["Warning"])
.to eq("299 - This endpoint is part of the V0 (beta) API. To start using the V1 endpoints add the `Accept` header and set it to `application/vnd.forem.api-v1+json`. Visit https://developers.forem.com/api for more information.")
# rubocop:enable Layout/LineLength
end
end
context "when request header is v0 and includes an api key" do
let(:headers) { { Accept: "application/v0+json", "api-key": "abc123" } }
it "responds with a Warning header with code 299" do
get path, headers: headers
expect(response).to have_http_status(:success)
# rubocop:disable Layout/LineLength
expect(response.headers["Warning"])
.to eq("299 - This endpoint is part of the V0 (beta) API. To start using the V1 endpoints add the `Accept` header and set it to `application/vnd.forem.api-v1+json`. Visit https://developers.forem.com/api for more information.")
# rubocop:enable Layout/LineLength
end
end
context "when request header is missing" do
let(:headers) { {} }
it "responds with a Success code and no warning header" do
get path, headers: headers
expect(response).to have_http_status(:success)
# rubocop:disable Layout/LineLength
expect(response.headers["Warning"])
.to eq("299 - This endpoint is part of the V0 (beta) API. To start using the V1 endpoints add the `Accept` header and set it to `application/vnd.forem.api-v1+json`. Visit https://developers.forem.com/api for more information.")
# rubocop:enable Layout/LineLength
end
end
end
end