477ba2b346
Basic `/internal/pages` endpoint that will be used for Pages virtual domains internal API. The endpoint is currently behind feature flag and provides authetication similar to how Workhorse is authenticating with the GitLab.
29 lines
967 B
Ruby
29 lines
967 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe Gitlab::Pages do
|
|
let(:pages_shared_secret) { SecureRandom.random_bytes(Gitlab::Pages::SECRET_LENGTH) }
|
|
|
|
before do
|
|
allow(described_class).to receive(:secret).and_return(pages_shared_secret)
|
|
end
|
|
|
|
describe '.verify_api_request' do
|
|
let(:payload) { { 'iss' => 'gitlab-pages' } }
|
|
|
|
it 'returns false if fails to validate the JWT' do
|
|
encoded_token = JWT.encode(payload, 'wrongsecret', 'HS256')
|
|
headers = { described_class::INTERNAL_API_REQUEST_HEADER => encoded_token }
|
|
|
|
expect(described_class.verify_api_request(headers)).to eq(false)
|
|
end
|
|
|
|
it 'returns the decoded JWT' do
|
|
encoded_token = JWT.encode(payload, described_class.secret, 'HS256')
|
|
headers = { described_class::INTERNAL_API_REQUEST_HEADER => encoded_token }
|
|
|
|
expect(described_class.verify_api_request(headers)).to eq([{ "iss" => "gitlab-pages" }, { "alg" => "HS256" }])
|
|
end
|
|
end
|
|
end
|