Skip to content

Commit

Permalink
Refactor Token policies to use shared examples
Browse files Browse the repository at this point in the history
  • Loading branch information
vpereira authored and Dany Marcoux committed Apr 26, 2021
1 parent 5b8cb30 commit 89ed8bf
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 30 deletions.
21 changes: 11 additions & 10 deletions src/api/spec/policies/token/rebuild_policy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
require 'rails_helper'

RSpec.describe Token::RebuildPolicy do
let!(:user) { create(:confirmed_user, login: 'foo') }
let!(:project) { create(:project, maintainer: user) }
let!(:package) { create(:package, project: project) }
let!(:other_user) { build(:confirmed_user, login: 'bar') }
let!(:rebuild_token) { create(:rebuild_token, :with_package_from_association_or_param, user: user, package: package) }
let!(:other_user_rebuild_token) { create(:rebuild_token, :with_package_from_association_or_param, user: other_user) }

subject { described_class }

describe '#create' do
permissions :create? do
it { expect(subject).to permit(user, rebuild_token) }
it { expect(subject).not_to permit(other_user, other_user_rebuild_token) }
context 'user inactive' do
let(:user_token) { create(:rebuild_token, :with_package_from_association_or_param, user: user) }

include_examples 'non-active users cannot use a token'
end

context 'user active' do
let(:user_token) { create(:rebuild_token, :with_package_from_association_or_param, user: user, package: package) }
let(:other_user_token) { create(:rebuild_token, :with_package_from_association_or_param, user: other_user) }

include_examples 'active users token basic tests'
end
end
end
21 changes: 11 additions & 10 deletions src/api/spec/policies/token/release_policy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
require 'rails_helper'

RSpec.describe Token::ReleasePolicy do
let!(:user) { create(:confirmed_user, login: 'foo') }
let!(:project) { create(:project, maintainer: user) }
let!(:package) { create(:package, project: project) }
let!(:other_user) { build(:confirmed_user, login: 'bar') }
let!(:release_token) { create(:release_token, :with_package_from_association_or_param, user: user, package: package) }
let!(:other_user_release_token) { create(:release_token, :with_package_from_association_or_param, user: other_user) }

subject { described_class }

describe '#create' do
permissions :create? do
it { expect(subject).to permit(user, release_token) }
it { expect(subject).not_to permit(other_user, other_user_release_token) }
context 'user inactive' do
let(:user_token) { create(:release_token, :with_package_from_association_or_param, user: user) }

include_examples 'non-active users cannot use a token'
end

context 'user active' do
let(:user_token) { create(:release_token, :with_package_from_association_or_param, user: user, package: package) }
let(:other_user_token) { create(:release_token, :with_package_from_association_or_param, user: other_user) }

include_examples 'active users token basic tests'
end
end
end
21 changes: 11 additions & 10 deletions src/api/spec/policies/token/service_policy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
require 'rails_helper'

RSpec.describe Token::ServicePolicy do
let!(:user) { create(:confirmed_user, login: 'foo') }
let!(:project) { create(:project, maintainer: user) }
let!(:package) { create(:package, project: project) }
let!(:other_user) { build(:confirmed_user, login: 'bar') }
let!(:service_token) { create(:release_token, :with_package_from_association_or_param, user: user, package: package) }
let!(:other_user_service_token) { create(:release_token, :with_package_from_association_or_param, user: other_user) }

subject { described_class }

describe '#create' do
permissions :create? do
it { expect(subject).to permit(user, service_token) }
it { expect(subject).not_to permit(other_user, other_user_service_token) }
context 'user inactive' do
let(:user_token) { create(:service_token, :with_package_from_association_or_param, user: user) }

include_examples 'non-active users cannot use a token'
end

context 'user active' do
let(:user_token) { create(:service_token, :with_package_from_association_or_param, user: user, package: package) }
let(:other_user_token) { create(:service_token, :with_package_from_association_or_param, user: other_user) }

include_examples 'active users token basic tests'
end
end
end
21 changes: 21 additions & 0 deletions src/api/spec/support/shared_examples/tokens.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
RSpec.shared_examples 'non-active users cannot use a token' do
let(:user) { create(:locked_user, login: 'foo') }
let(:project) { create(:project, maintainer: user) }
let(:package) { create(:package, project: project) }

permissions :create? do
it { expect(subject).not_to permit(user, user_token) }
end
end

RSpec.shared_examples 'active users token basic tests' do
let(:user) { create(:confirmed_user, login: 'foo') }
let(:project) { create(:project, maintainer: user) }
let(:package) { create(:package, project: project) }
let(:other_user) { build(:confirmed_user, login: 'bar') }

permissions :create? do
it { expect(subject).to permit(user, user_token) }
it { expect(subject).not_to permit(other_user, other_user_token) }
end
end

0 comments on commit 89ed8bf

Please sign in to comment.