summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/integration/server_spec.rb43
1 files changed, 38 insertions, 5 deletions
diff --git a/spec/integration/server_spec.rb b/spec/integration/server_spec.rb
index 93d2bfd..6a041fb 100644
--- a/spec/integration/server_spec.rb
+++ b/spec/integration/server_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
RSpec.describe "Server" do
- let(:base_url) { "http://#{RSpec.configuration.bind_addr}" }
+ let(:host) { RSpec.configuration.bind_addr }
+ let(:base_url) { "http://#{host}" }
let(:client) { RSpec.configuration.http }
describe "GET /" do
@@ -22,10 +23,42 @@ RSpec.describe "Server" do
# https://datatracker.ietf.org/doc/html/rfc8414#section-3.1
describe "GET /.well-known/oauth-authorization-server" do
- it 'returns OK' do
- response = client.get(base_url + "/.well-known/oauth-authorization-server")
- expect(response.code).to eq("200")
- expect(response["Content-Type"]).to eq("application/json")
+ let(:response) { client.get(base_url + "/.well-known/oauth-authorization-server") }
+ let(:json) { JSON.parse(response.body, symbolize_names: true) }
+
+ it { expect(response.code).to eq("200") }
+ it { expect(response["Content-Type"]).to eq("application/json") }
+
+ it 'returns required fields' do
+ expect(json[:issuer]).to eq("#{base_url}")
+ expect(json[:authorization_endpoint]).to eq("#{base_url}/authorize")
+ expect(json[:token_endpoint]).to eq("#{base_url}/token")
+ expect(json[:response_types_supported]).to match_array(["code"])
+ end
+
+ it 'returns recommended fields' do
+ expect(json[:scopes_supported]).to match_array(["openid", "profile", "email"])
+ end
+
+ pending 'returns optional fields' do
+ expect(json[:response_modes_supported]).to eq("")
+ expect(json[:jwks_uri]).to eq("#{base_url}/jwks.json")
+ expect(json[:registration_endpoint]).to eq("#{base_url}/register")
+ expect(json[:token_endpoint_auth_methods_supported]).to match_array(["client_secret_basic"])
+ expect(json[:token_endpoint_auth_signing_alg_values_supported]).to match_array(["RS256"])
+ expect(json[:service_documentation]).to eq("#{base_url}/service_documentation.html")
+ expect(json[:ui_locales_supported]).to match_array(["en-US"])
+ expect(json[:op_policy_uri]).to eq("")
+ expect(json[:op_tos_uri]).to eq("")
+ expect(json[:revocation_endpoint]).to eq("")
+ expect(json[:revocation_endpoint_auth_methods_supported]).to eq("")
+ expect(json[:revocation_endpoint_auth_signing_alg_values_supported]).to eq("")
+ expect(json[:introspection_endpoint]).to eq("")
+ expect(json[:introspection_endpoint_auth_methods_supported]).to eq("")
+ expect(json[:introspection_endpoint_auth_signing_alg_values_supported]).to eq("")
+ expect(json[:code_challenge_methods_supported]).to eq("")
+ expect(json[:signed_metadata]).to eq("")
+ expect(json[:grant_types_supported]).to match_array(["authorization_code"])
end
end