Skip to content

Commit 8b20437

Browse files
authored
Do not return permissions/memberships that have user_id: nil (#1166)
1 parent 5d9e03b commit 8b20437

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

lib/travis/api/v3/queries/build_permissions.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module Travis::API::V3
22
class Queries::BuildPermissions < Query
33
def find_for_repo(repository)
4-
Models::Repository.find(repository.id).permissions.includes(:user)
4+
Models::Repository.find(repository.id).permissions.joins(:user).includes(:user)
55
end
66

77
def find_for_organization(organization)
8-
Models::Membership.where(organization_id: organization.id).includes(:user)
8+
Models::Membership.where(organization_id: organization.id).joins(:user).includes(:user)
99
end
1010

1111
def update_for_organization(organization, user_ids, permission)

spec/v3/queries/build_permissions_spec.rb

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,45 @@
55

66
describe '#find_for_repo' do
77
let(:repo) { FactoryBot.create(:repository) }
8-
9-
before { repo.permissions.create(build: true, user: user) }
8+
let!(:permission) { repo.permissions.create(build: true, user: user) }
109

1110
it 'returns permissions for repo' do
1211
perms = subject.find_for_repo(repo)
1312

1413
expect(perms.first.build).to eq(true)
1514
expect(perms.first.user.id).to eq(user.id)
1615
end
16+
17+
context 'when permission has user_id: nil' do
18+
let!(:permission) { repo.permissions.create(build: true, user_id: nil) }
19+
20+
it 'filters it out' do
21+
perms = subject.find_for_repo(repo)
22+
expect(perms.length).to eq(0)
23+
end
24+
end
1725
end
1826

1927
describe '#find_for_organization' do
2028
let(:organization) { FactoryBot.create(:org) }
2129

22-
before { organization.memberships.create(user: user, role: 'admin', build_permission: true) }
30+
let!(:membership) { organization.memberships.create(user: user, role: 'admin', build_permission: true) }
2331

2432
it 'returns build memberships for organization' do
2533
perms = subject.find_for_organization(organization)
2634

2735
expect(perms.first.build_permission).to eq(true)
2836
expect(perms.first.user.id).to eq(user.id)
2937
end
38+
39+
context 'when membership has user_id: nil' do
40+
let!(:membership) { organization.memberships.create(user_id: nil, role: 'admin', build_permission: true) }
41+
42+
it 'filters it out' do
43+
perms = subject.find_for_organization(organization)
44+
expect(perms.length).to eq(0)
45+
end
46+
end
3047
end
3148

3249
describe '#update_for_repo' do

0 commit comments

Comments
 (0)