Skip to content

Commit dc78ed8

Browse files
committed
✅ add some tests
1 parent fff405a commit dc78ed8

2 files changed

Lines changed: 106 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# frozen_string_literal: true
2+
3+
require 'test_helper'
4+
5+
class Provider::Admin::User::AccessTokensControllerTest < ActionController::TestCase
6+
7+
def setup
8+
@provider = FactoryBot.create(:provider_account)
9+
@admin = @provider.admins.first
10+
11+
host! @provider.external_admin_domain
12+
login_as @admin
13+
end
14+
15+
test 'index renders the tokens list' do
16+
get :index
17+
18+
assert_response :success
19+
assert_template 'index'
20+
end
21+
22+
test 'index renders access_token_created when flash[:token] is set' do
23+
token = FactoryBot.create(:access_token, owner: @admin)
24+
25+
get :index, flash: { token: token.id }
26+
27+
assert_response :success
28+
assert_template 'access_token_created'
29+
end
30+
31+
test 'index falls back to normal index when flash[:token] references a nonexistent token' do
32+
get :index, flash: { token: 'nonexistent' }
33+
34+
assert_response :success
35+
assert_template 'index'
36+
end
37+
38+
test 'index does not expose tokens from other users' do
39+
other_user = FactoryBot.create(:simple_user, account: @provider)
40+
other_token = FactoryBot.create(:access_token, owner: other_user)
41+
42+
get :index, flash: { token: other_token.id }
43+
44+
assert_response :success
45+
assert_template 'index'
46+
end
47+
end
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# frozen_string_literal: true
2+
3+
require 'test_helper'
4+
5+
class Provider::Admin::User::AccessTokensIndexPresenterTest < ActiveSupport::TestCase
6+
7+
setup do
8+
@provider = FactoryBot.create(:simple_provider)
9+
end
10+
11+
test '#access_tokens returns the user access tokens' do
12+
user = FactoryBot.create(:admin, account: @provider)
13+
token = FactoryBot.create(:access_token, owner: user)
14+
other_token = FactoryBot.create(:access_token)
15+
16+
presenter = Provider::Admin::User::AccessTokensIndexPresenter.new(user: user)
17+
18+
access_tokens = presenter.access_tokens
19+
assert_includes access_tokens, token
20+
assert_not_includes access_tokens, other_token
21+
end
22+
23+
test '#no_allowed_scopes? is true when user has no permissions' do
24+
member = FactoryBot.create(:simple_user, account: @provider)
25+
26+
presenter = Provider::Admin::User::AccessTokensIndexPresenter.new(user: member)
27+
28+
assert presenter.no_allowed_scopes?
29+
end
30+
31+
test '#no_allowed_scopes? is false when user has relevant permissions' do
32+
user = FactoryBot.create(:simple_user, account: @provider)
33+
user.stubs(:allowed_access_token_scopes).returns(
34+
AccessToken::ScopesFactory.build('Analytics API' => 'stats')
35+
)
36+
37+
presenter = Provider::Admin::User::AccessTokensIndexPresenter.new(user: user)
38+
39+
assert_not presenter.no_allowed_scopes?
40+
end
41+
42+
test '#service_tokens returns services with tokens for authorized users' do
43+
admin = FactoryBot.create(:admin, account: @provider)
44+
token = FactoryBot.create(:simple_service, account: @provider).active_service_token
45+
46+
presenter = Provider::Admin::User::AccessTokensIndexPresenter.new(user: admin)
47+
48+
assert_includes presenter.service_tokens.map(&:active_service_token), token
49+
end
50+
51+
test '#service_tokens returns empty for users without plans permission' do
52+
member = FactoryBot.create(:simple_user, account: @provider)
53+
member.stubs(:has_permission?).with(:plans).returns(false)
54+
55+
presenter = Provider::Admin::User::AccessTokensIndexPresenter.new(user: member)
56+
57+
assert_empty presenter.service_tokens
58+
end
59+
end

0 commit comments

Comments
 (0)