37 lines
1.6 KiB
Ruby
37 lines
1.6 KiB
Ruby
O_AUTH_QUERY_PARAMS_WITH_CODE = {
|
|
redirect_uri: "http://localhost:3000",
|
|
response_type: "code",
|
|
scope: "openid profile read",
|
|
nonce: "hello",
|
|
state: "hi"
|
|
}
|
|
|
|
Given /^I send a post request from that client to the code flow authorization endpoint$/ do
|
|
client_json = JSON.parse(last_response.body)
|
|
@client_id = client_json["client_id"]
|
|
@client_secret = client_json["client_secret"]
|
|
params = O_AUTH_QUERY_PARAMS_WITH_CODE.merge(client_id: @client_id)
|
|
visit new_api_openid_connect_authorization_path(params)
|
|
end
|
|
|
|
Given /^I send a post request from that client to the code flow authorization endpoint using a invalid client id/ do
|
|
params = O_AUTH_QUERY_PARAMS_WITH_CODE.merge(client_id: "randomid")
|
|
visit new_api_openid_connect_authorization_path(params)
|
|
end
|
|
|
|
When /^I parse the auth code and create a request to the token endpoint$/ do
|
|
code = current_url[/(?<=code=)[^&]+/]
|
|
post api_openid_connect_access_tokens_path, code: code,
|
|
redirect_uri: "http://localhost:3000", grant_type: "authorization_code",
|
|
client_id: @client_id, client_secret: @client_secret
|
|
end
|
|
|
|
When /^I parse the tokens and use it obtain user info$/ do
|
|
client_json = JSON.parse(last_response.body)
|
|
access_token = client_json["access_token"]
|
|
encoded_id_token = client_json["id_token"]
|
|
decoded_token = OpenIDConnect::ResponseObject::IdToken.decode encoded_id_token,
|
|
Api::OpenidConnect::IdTokenConfig::PUBLIC_KEY
|
|
expect(decoded_token.sub).to eq(@me.diaspora_handle)
|
|
get api_openid_connect_user_info_path, access_token: access_token
|
|
end
|