* 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>
88 lines
3.2 KiB
Ruby
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
|