-
Notifications
You must be signed in to change notification settings - Fork 435
/
token_policy_spec.rb
82 lines (63 loc) · 2.9 KB
/
token_policy_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'rails_helper'
RSpec.describe TokenPolicy, type: :policy do
let(:token_user) { create(:confirmed_user) }
let(:user_token) { create(:rebuild_token, executor: token_user) }
let(:group) { create(:group_with_user) }
let(:other_user) { group.users.first }
let(:unconfirmed_user) { create(:user, state: 'unconfirmed') }
let(:token_of_unconfirmed_user) { create(:rebuild_token, executor: unconfirmed_user) }
let(:workflow_token) { create(:workflow_token, executor: token_user) }
let(:rss_token) { create(:rss_token, executor: token_user) }
subject { described_class }
permissions :webui_trigger?, :show? do
it { is_expected.not_to permit(other_user, user_token) }
it { is_expected.not_to permit(token_user, rss_token) }
it { is_expected.to permit(token_user, user_token) }
end
permissions :show? do
it { is_expected.to permit(token_user, workflow_token) }
end
permissions :webui_trigger? do
it { is_expected.not_to permit(token_user, workflow_token) }
it { is_expected.not_to permit(unconfirmed_user, token_of_unconfirmed_user) }
end
describe TokenPolicy::Scope do
describe '#resolve' do
let!(:scope) { Token }
context 'when the user is associated to the token' do
let!(:token_user) { create(:confirmed_user) }
let!(:other_user) { create(:confirmed_user) }
let!(:rss_token) { create(:rss_token, executor: token_user) }
let!(:workflow_token) { create(:workflow_token, executor: token_user) }
let!(:other_users_workflow_token) { create(:workflow_token, executor: other_user) }
let!(:shared_workflow_token) { create(:workflow_token, executor: other_user) }
subject { described_class.new(token_user, scope) }
before do
token_user.shared_workflow_tokens << shared_workflow_token
end
it 'does not return rss tokens' do
expect(subject.resolve).not_to include(rss_token)
end
it 'returns the workflow token the token_user created' do
expect(subject.resolve).to include(workflow_token)
end
it 'does not return the workflow token the other_user created' do
expect(subject.resolve).not_to include(other_users_workflow_token)
end
it 'returns the workflow token the token_user shared with other_user' do
expect(subject.resolve).to include(shared_workflow_token)
end
end
context 'when the group is associated to the token' do
let!(:group_shared_workflow_token) { create(:workflow_token, executor: other_user, string: 'group token') }
subject { described_class.new(other_user, scope) }
before do
group.shared_workflow_tokens << group_shared_workflow_token
end
it 'returns the workflow token associated to the group of other_user' do
expect(subject.resolve).to include(group_shared_workflow_token)
end
end
end
end
end