mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-10-15 00:00:44 -04:00
86 lines
2.7 KiB
Ruby
86 lines
2.7 KiB
Ruby
require File.expand_path('../../test_helper', __FILE__)
|
|
|
|
module Stripe
|
|
class OAuthTest < Test::Unit::TestCase
|
|
setup do
|
|
Stripe.client_id = 'ca_test'
|
|
end
|
|
|
|
teardown do
|
|
Stripe.client_id = nil
|
|
end
|
|
|
|
context ".authorize_url" do
|
|
should "return the authorize URL" do
|
|
uri_str = OAuth.authorize_url({
|
|
scope: 'read_write',
|
|
state: 'csrf_token',
|
|
stripe_user: {
|
|
email: 'test@example.com',
|
|
url: 'https://example.com/profile/test',
|
|
country: 'US',
|
|
},
|
|
})
|
|
|
|
uri = URI::parse(uri_str)
|
|
params = CGI::parse(uri.query)
|
|
|
|
assert_equal('https', uri.scheme)
|
|
assert_equal('connect.stripe.com', uri.host)
|
|
assert_equal('/oauth/authorize', uri.path)
|
|
|
|
assert_equal(['ca_test'], params['client_id'])
|
|
assert_equal(['read_write'], params['scope'])
|
|
assert_equal(['test@example.com'], params['stripe_user[email]'])
|
|
assert_equal(['https://example.com/profile/test'], params['stripe_user[url]'])
|
|
assert_equal(['US'], params['stripe_user[country]'])
|
|
end
|
|
end
|
|
|
|
context ".token" do
|
|
should "exchange a code for an access token" do
|
|
# The OpenAPI fixtures don't cover the OAuth endpoints, so we just
|
|
# stub the request manually.
|
|
stub_request(:post, "#{Stripe.connect_base}/oauth/token").
|
|
with(body: {
|
|
'grant_type' => 'authorization_code',
|
|
'code' => 'this_is_an_authorization_code',
|
|
}).
|
|
to_return(body: JSON.generate({
|
|
access_token: 'sk_access_token',
|
|
scope: 'read_only',
|
|
livemode: false,
|
|
token_type: 'bearer',
|
|
refresh_token: 'sk_refresh_token',
|
|
stripe_user_id: 'acct_test',
|
|
stripe_publishable_key: 'pk_test',
|
|
}))
|
|
|
|
resp = OAuth.token({
|
|
grant_type: 'authorization_code',
|
|
code: 'this_is_an_authorization_code',
|
|
})
|
|
assert_equal('sk_access_token', resp.access_token)
|
|
end
|
|
end
|
|
|
|
context ".deauthorize" do
|
|
should "deauthorize an account" do
|
|
# The OpenAPI fixtures don't cover the OAuth endpoints, so we just
|
|
# stub the request manually.
|
|
stub_request(:post, "#{Stripe.connect_base}/oauth/deauthorize").
|
|
with(body: {
|
|
'client_id' => 'ca_test',
|
|
'stripe_user_id' => 'acct_test_deauth',
|
|
}).
|
|
to_return(body: JSON.generate({
|
|
stripe_user_id: 'acct_test_deauth',
|
|
}))
|
|
|
|
resp = OAuth.deauthorize({stripe_user_id: 'acct_test_deauth'})
|
|
assert_equal('acct_test_deauth', resp.stripe_user_id)
|
|
end
|
|
end
|
|
end
|
|
end
|