File tree Expand file tree Collapse file tree 6 files changed +39
-2
lines changed
spec/lib/travis/api/enqueue/services Expand file tree Collapse file tree 6 files changed +39
-2
lines changed Original file line number Diff line number Diff line change @@ -45,8 +45,8 @@ def billing?
45
45
@cause_of_denial = e . message
46
46
false
47
47
rescue Travis ::API ::V3 ::NotFound
48
- # Owner is on a legacy plan
49
- if subscription &. active?
48
+ if subscription &. active? || owner_group_subscription?
49
+ # Owner is on a legacy plan or belongs to a group
50
50
true
51
51
else
52
52
@cause_of_denial = 'You do not seem to have active subscription.'
@@ -86,6 +86,18 @@ def subscription
86
86
Subscription . where ( owner : repository . owner ) &.first
87
87
end
88
88
89
+ def owner_group
90
+ repository &.owner &.owner_group
91
+ end
92
+
93
+ def owner_group_subscription?
94
+ return false if owner_group . blank?
95
+
96
+ group_owners = OwnerGroup . where ( uuid : owner_group . uuid ) . map ( &:owner )
97
+ active_subscriptions = Subscription . where ( owner : group_owners ) . select ( &:active? )
98
+ active_subscriptions . present?
99
+ end
100
+
89
101
def permission?
90
102
current_user && current_user . permission? ( required_role , repository_id : target . repository_id ) && !abusive? && build_permission?
91
103
end
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ class Model < ActiveRecord::Base
18
18
require 'travis/model/job'
19
19
require 'travis/model/membership'
20
20
require 'travis/model/organization'
21
+ require 'travis/model/owner_group'
21
22
require 'travis/model/permission'
22
23
require 'travis/model/pull_request'
23
24
require 'travis/model/repository'
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ class Organization < Travis::Model
5
5
has_many :memberships
6
6
has_many :users , :through => :memberships
7
7
has_many :repositories , :as => :owner
8
+ has_one :owner_group , as : :owner
8
9
9
10
def education?
10
11
Travis ::Features . owner_active? ( :educational_org , self )
Original file line number Diff line number Diff line change
1
+ require 'gh'
2
+ require 'travis/model'
3
+
4
+ class OwnerGroup < Travis ::Model
5
+ belongs_to :owner , polymorphic : true
6
+ end
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ class User < Travis::Model
12
12
has_many :permissions , dependent : :destroy
13
13
has_many :repositories , through : :permissions
14
14
has_many :emails , dependent : :destroy
15
+ has_one :owner_group , as : :owner
15
16
16
17
before_create :set_as_recent
17
18
after_create :create_a_token
Original file line number Diff line number Diff line change 118
118
include_examples 'does not restart the job'
119
119
end
120
120
121
+ context 'when customer belongs to a group' do
122
+ let ( :uuid ) { SecureRandom . uuid }
123
+ let! ( :travis ) { FactoryBot . create ( :org , login : 'travis' ) }
124
+ let! ( :john ) { FactoryBot . create ( :user , login : 'john' ) }
125
+ let! ( :doe ) { FactoryBot . create ( :user , login : 'doe' ) }
126
+ before do
127
+ repository . permissions . create ( user : user , build : true )
128
+ FactoryBot . create ( :valid_stripe_subs , owner : john )
129
+ OwnerGroup . create ( uuid : uuid , owner : owner )
130
+ OwnerGroup . create ( uuid : uuid , owner : john )
131
+ OwnerGroup . create ( uuid : uuid , owner : doe )
132
+ end
133
+
134
+ include_examples 'restarts the job'
135
+ end
136
+
121
137
end
122
138
end
123
139
end
You can’t perform that action at this time.
0 commit comments