diff options
Diffstat (limited to 'spec/support/shared_examples/models')
8 files changed, 127 insertions, 103 deletions
diff --git a/spec/support/shared_examples/models/chat_service_shared_examples.rb b/spec/support/shared_examples/models/chat_integration_shared_examples.rb index 4a47aad0957..9f3be3e2e06 100644 --- a/spec/support/shared_examples/models/chat_service_shared_examples.rb +++ b/spec/support/shared_examples/models/chat_integration_shared_examples.rb @@ -1,13 +1,13 @@ # frozen_string_literal: true -RSpec.shared_examples "chat service" do |service_name| +RSpec.shared_examples "chat integration" do |integration_name| describe "Associations" do it { is_expected.to belong_to :project } it { is_expected.to have_one :service_hook } end describe "Validations" do - context "when service is active" do + context "when integration is active" do before do subject.active = true end @@ -16,7 +16,7 @@ RSpec.shared_examples "chat service" do |service_name| it_behaves_like "issue tracker service URL attribute", :webhook end - context "when service is inactive" do + context "when integration is inactive" do before do subject.active = false end @@ -47,12 +47,12 @@ RSpec.shared_examples "chat service" do |service_name| WebMock.stub_request(:post, webhook_url) end - shared_examples "triggered #{service_name} service" do |branches_to_be_notified: nil| + shared_examples "triggered #{integration_name} integration" do |branches_to_be_notified: nil| before do subject.branches_to_be_notified = branches_to_be_notified if branches_to_be_notified end - it "calls #{service_name} API" do + it "calls #{integration_name} API" do result = subject.execute(sample_data) expect(result).to be(true) @@ -63,12 +63,12 @@ RSpec.shared_examples "chat service" do |service_name| end end - shared_examples "untriggered #{service_name} service" do |branches_to_be_notified: nil| + shared_examples "untriggered #{integration_name} integration" do |branches_to_be_notified: nil| before do subject.branches_to_be_notified = branches_to_be_notified if branches_to_be_notified end - it "does not call #{service_name} API" do + it "does not call #{integration_name} API" do result = subject.execute(sample_data) expect(result).to be(false) @@ -81,7 +81,7 @@ RSpec.shared_examples "chat service" do |service_name| Gitlab::DataBuilder::Push.build_sample(project, user) end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" it "specifies the webhook when it is configured", if: defined?(client) do expect(client).to receive(:new).with(client_arguments).and_return(double(:chat_service).as_null_object) @@ -95,19 +95,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end @@ -121,19 +121,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end @@ -143,19 +143,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end end @@ -168,7 +168,7 @@ RSpec.shared_examples "chat service" do |service_name| service.hook_data(issue, "open") end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with merge events" do @@ -191,7 +191,7 @@ RSpec.shared_examples "chat service" do |service_name| project.add_developer(user) end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with wiki page events" do @@ -207,7 +207,7 @@ RSpec.shared_examples "chat service" do |service_name| let(:wiki_page) { create(:wiki_page, wiki: project.wiki, **opts) } let(:sample_data) { Gitlab::DataBuilder::WikiPage.build(wiki_page, user, "create") } - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with note events" do @@ -222,7 +222,7 @@ RSpec.shared_examples "chat service" do |service_name| note: "a comment on a commit") end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with merge request comment" do @@ -230,7 +230,7 @@ RSpec.shared_examples "chat service" do |service_name| create(:note_on_merge_request, project: project, note: "merge request note") end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with issue comment" do @@ -238,7 +238,7 @@ RSpec.shared_examples "chat service" do |service_name| create(:note_on_issue, project: project, note: "issue note") end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with snippet comment" do @@ -246,7 +246,7 @@ RSpec.shared_examples "chat service" do |service_name| create(:note_on_project_snippet, project: project, note: "snippet note") end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end end @@ -262,14 +262,14 @@ RSpec.shared_examples "chat service" do |service_name| context "with failed pipeline" do let(:status) { "failed" } - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end context "with succeeded pipeline" do let(:status) { "success" } context "with default notify_only_broken_pipelines" do - it "does not call #{service_name} API" do + it "does not call #{integration_name} API" do result = subject.execute(sample_data) expect(result).to be_falsy @@ -281,7 +281,7 @@ RSpec.shared_examples "chat service" do |service_name| subject.notify_only_broken_pipelines = false end - it_behaves_like "triggered #{service_name} service" + it_behaves_like "triggered #{integration_name} integration" end end @@ -291,19 +291,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end @@ -317,19 +317,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end @@ -339,19 +339,19 @@ RSpec.shared_examples "chat service" do |service_name| end context "when only default branch are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default" end context "when only protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "protected" end context "when default and protected branches are to be notified" do - it_behaves_like "untriggered #{service_name} service", branches_to_be_notified: "default_and_protected" + it_behaves_like "untriggered #{integration_name} integration", branches_to_be_notified: "default_and_protected" end context "when all branches are to be notified" do - it_behaves_like "triggered #{service_name} service", branches_to_be_notified: "all" + it_behaves_like "triggered #{integration_name} integration", branches_to_be_notified: "all" end end end diff --git a/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb b/spec/support/shared_examples/models/concerns/integrations/slack_mattermost_notifier_shared_examples.rb index 09b7d1be704..66448aca2c5 100644 --- a/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/integrations/slack_mattermost_notifier_shared_examples.rb @@ -1,13 +1,13 @@ # frozen_string_literal: true -RSpec.shared_examples 'slack or mattermost notifications' do |service_name| +RSpec.shared_examples Integrations::SlackMattermostNotifier do |service_name| include StubRequests let(:chat_service) { described_class.new } let(:webhook_url) { 'https://example.gitlab.com' } def execute_with_options(options) - receive(:new).with(webhook_url, options.merge(http_client: SlackMattermost::Notifier::HTTPClient)) + receive(:new).with(webhook_url, options.merge(http_client: Integrations::SlackMattermostNotifier::HTTPClient)) .and_return(double(:slack_service).as_null_object) end @@ -81,7 +81,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| shared_examples 'calls the service API with the event message' do |event_message| specify do - expect_next_instance_of(Slack::Messenger) do |messenger| + expect_next_instance_of(::Slack::Messenger) do |messenger| expect(messenger).to receive(:ping).with(event_message, anything).and_call_original end @@ -95,7 +95,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { username: 'slack_username' } } it 'uses the username as an option' do - expect(Slack::Messenger).to execute_with_options(username: 'slack_username') + expect(::Slack::Messenger).to execute_with_options(username: 'slack_username') execute_service end @@ -110,7 +110,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { push_channel: 'random' } } it 'uses the right channel for push event' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -128,6 +128,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| context 'issue events' do let_it_be(:issue) { create(:issue) } + let(:data) { issue.to_hook_data(user) } it_behaves_like 'calls the service API with the event message', /Issue (.*?) opened by/ @@ -136,7 +137,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { issue_channel: 'random' } } it 'uses the right channel for issue event' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -147,7 +148,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| end it 'falls back to issue channel' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -156,7 +157,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { issue_channel: 'random', confidential_issue_channel: 'confidential' } } it 'uses the confidential issue channel when it is defined' do - expect(Slack::Messenger).to execute_with_options(channel: ['confidential']) + expect(::Slack::Messenger).to execute_with_options(channel: ['confidential']) execute_service end @@ -167,6 +168,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| context 'merge request events' do let_it_be(:merge_request) { create(:merge_request) } + let(:data) { merge_request.to_hook_data(user) } it_behaves_like 'calls the service API with the event message', /opened merge request/ @@ -175,7 +177,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { merge_request_channel: 'random' } } it 'uses the right channel for merge request event' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -184,15 +186,16 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| context 'wiki page events' do let_it_be(:wiki_page) { create(:wiki_page, wiki: project.wiki, message: 'user created page: Awesome wiki_page') } + let(:data) { Gitlab::DataBuilder::WikiPage.build(wiki_page, user, 'create') } - it_behaves_like 'calls the service API with the event message', / created (.*?)wikis\/(.*?)|wiki page> in/ + it_behaves_like 'calls the service API with the event message', %r{ created (.*?)wikis/(.*?)|wiki page> in} context 'with event channel' do let(:chat_service_params) { { wiki_page_channel: 'random' } } it 'uses the right channel for wiki event' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -201,6 +204,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| context 'deployment events' do let_it_be(:deployment) { create(:deployment) } + let(:data) { Gitlab::DataBuilder::Deployment.build(deployment, Time.current) } it_behaves_like 'calls the service API with the event message', /Deploy to (.*?) created/ @@ -208,6 +212,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| context 'note event' do let_it_be(:issue_note) { create(:note_on_issue, project: project, note: "issue note") } + let(:data) { Gitlab::DataBuilder::Note.build(issue_note, user) } it_behaves_like 'calls the service API with the event message', /commented on issue/ @@ -216,7 +221,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { note_channel: 'random' } } it 'uses the right channel' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -227,7 +232,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| end it 'falls back to note channel' do - expect(Slack::Messenger).to execute_with_options(channel: ['random']) + expect(::Slack::Messenger).to execute_with_options(channel: ['random']) execute_service end @@ -236,7 +241,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| let(:chat_service_params) { { note_channel: 'random', confidential_note_channel: 'confidential' } } it 'uses confidential channel' do - expect(Slack::Messenger).to execute_with_options(channel: ['confidential']) + expect(::Slack::Messenger).to execute_with_options(channel: ['confidential']) execute_service end diff --git a/spec/support/shared_examples/models/concerns/timebox_shared_examples.rb b/spec/support/shared_examples/models/concerns/timebox_shared_examples.rb index 68142e667a4..39121b73bc5 100644 --- a/spec/support/shared_examples/models/concerns/timebox_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/timebox_shared_examples.rb @@ -86,45 +86,6 @@ RSpec.shared_examples 'a timebox' do |timebox_type| expect(timebox.errors[:project_id]).to include("#{timebox_type} should belong either to a project or a group.") end end - - describe "#uniqueness_of_title" do - context "per project" do - it "does not accept the same title in a project twice" do - new_timebox = timebox.dup - expect(new_timebox).not_to be_valid - end - - it "accepts the same title in another project" do - project = create(:project) - new_timebox = timebox.dup - new_timebox.project = project - - expect(new_timebox).to be_valid - end - end - - context "per group" do - let(:timebox) { create(timebox_type, *timebox_args, group: group) } - - before do - project.update!(group: group) - end - - it "does not accept the same title in a group twice" do - new_timebox = described_class.new(group: group, title: timebox.title) - - expect(new_timebox).not_to be_valid - end - - it "does not accept the same title of a child project timebox" do - create(timebox_type, *timebox_args, project: group.projects.first) - - new_timebox = described_class.new(group: group, title: timebox.title) - - expect(new_timebox).not_to be_valid - end - end - end end describe "Associations" do diff --git a/spec/support/shared_examples/models/chat_slash_commands_shared_examples.rb b/spec/support/shared_examples/models/integrations/base_slash_commands_shared_examples.rb index 49729afce61..128999d02fa 100644 --- a/spec/support/shared_examples/models/chat_slash_commands_shared_examples.rb +++ b/spec/support/shared_examples/models/integrations/base_slash_commands_shared_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.shared_examples 'chat slash commands service' do +RSpec.shared_examples Integrations::BaseSlashCommands do describe "Associations" do it { is_expected.to respond_to :token } it { is_expected.to have_many :chat_names } diff --git a/spec/support/shared_examples/models/mentionable_shared_examples.rb b/spec/support/shared_examples/models/mentionable_shared_examples.rb index 2392658e584..04630484964 100644 --- a/spec/support/shared_examples/models/mentionable_shared_examples.rb +++ b/spec/support/shared_examples/models/mentionable_shared_examples.rb @@ -66,7 +66,7 @@ RSpec.shared_examples 'a mentionable' do expect(subject.gfm_reference).to eq(backref_text) end - it "extracts references from its reference property" do + it "extracts references from its reference property", :clean_gitlab_redis_cache do # De-duplicate and omit itself refs = subject.referenced_mentionables expect(refs.size).to eq(6) @@ -98,7 +98,7 @@ RSpec.shared_examples 'a mentionable' do end end - it 'creates cross-reference notes' do + it 'creates cross-reference notes', :clean_gitlab_redis_cache do mentioned_objects = [mentioned_issue, mentioned_mr, mentioned_commit, ext_issue, ext_mr, ext_commit] diff --git a/spec/support/shared_examples/models/packages/debian/component_file_shared_example.rb b/spec/support/shared_examples/models/packages/debian/component_file_shared_example.rb index e6b16d5881d..f08ee820463 100644 --- a/spec/support/shared_examples/models/packages/debian/component_file_shared_example.rb +++ b/spec/support/shared_examples/models/packages/debian/component_file_shared_example.rb @@ -142,6 +142,14 @@ RSpec.shared_examples 'Debian Component File' do |container_type, can_freeze| end end + describe '.with_architecture' do + subject { described_class.with_architecture(architecture1_2) } + + it do + expect(subject.to_a).to contain_exactly(component_file_other_architecture) + end + end + describe '.with_architecture_name' do subject { described_class.with_architecture_name(architecture1_2.name) } @@ -166,12 +174,12 @@ RSpec.shared_examples 'Debian Component File' do |container_type, can_freeze| end end - describe '.created_before' do - let_it_be(:component_file1) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, created_at: 4.hours.ago) } - let_it_be(:component_file2) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, created_at: 3.hours.ago) } - let_it_be(:component_file3) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, created_at: 1.hour.ago) } + describe '.updated_before' do + let_it_be(:component_file1) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, updated_at: 4.hours.ago) } + let_it_be(:component_file2) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, updated_at: 3.hours.ago) } + let_it_be(:component_file3) { create("debian_#{container_type}_component_file", component: component1_1, architecture: architecture1_1, updated_at: 1.hour.ago) } - subject { described_class.created_before(2.hours.ago) } + subject { described_class.updated_before(2.hours.ago) } it do expect(subject.to_a).to contain_exactly(component_file1, component_file2) diff --git a/spec/support/shared_examples/models/packages/debian/distribution_key_shared_examples.rb b/spec/support/shared_examples/models/packages/debian/distribution_key_shared_examples.rb new file mode 100644 index 00000000000..26794c83736 --- /dev/null +++ b/spec/support/shared_examples/models/packages/debian/distribution_key_shared_examples.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.shared_examples 'Debian Distribution Key' do |container| + let_it_be_with_refind(:distribution_key) { create("debian_#{container}_distribution_key") } # rubocop:disable Rails/SaveBang + + subject { distribution_key } + + describe 'relationships' do + it { is_expected.to belong_to(:distribution).class_name("Packages::Debian::#{container.capitalize}Distribution").inverse_of(:key) } + end + + describe 'validations' do + describe "#distribution" do + it { is_expected.to validate_presence_of(:distribution) } + end + + describe '#private_key' do + it { is_expected.to validate_presence_of(:private_key) } + + it { is_expected.to allow_value("-----BEGIN PGP PRIVATE KEY BLOCK-----\n...").for(:private_key) } + it { is_expected.not_to allow_value('A').for(:private_key).with_message('must be ASCII armored') } + end + + describe '#passphrase' do + it { is_expected.to validate_presence_of(:passphrase) } + + it { is_expected.to allow_value('P@$$w0rd').for(:passphrase) } + it { is_expected.to allow_value('A' * 255).for(:passphrase) } + it { is_expected.not_to allow_value('A' * 256).for(:passphrase) } + end + + describe '#public_key' do + it { is_expected.to validate_presence_of(:public_key) } + + it { is_expected.to allow_value("-----BEGIN PGP PUBLIC KEY BLOCK-----\n...").for(:public_key) } + it { is_expected.not_to allow_value('A').for(:public_key).with_message('must be ASCII armored') } + end + + describe '#fingerprint' do + it { is_expected.to validate_presence_of(:passphrase) } + + it { is_expected.to allow_value('abc').for(:passphrase) } + it { is_expected.to allow_value('A' * 255).for(:passphrase) } + it { is_expected.not_to allow_value('A' * 256).for(:passphrase) } + end + end +end diff --git a/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb b/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb index 8693d6868e9..5459d17b1df 100644 --- a/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb +++ b/spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb @@ -17,6 +17,7 @@ RSpec.shared_examples 'Debian Distribution' do |factory, container, can_freeze| it { is_expected.to belong_to(container) } it { is_expected.to belong_to(:creator).class_name('User') } + it { is_expected.to have_one(:key).class_name("Packages::Debian::#{container.capitalize}DistributionKey").with_foreign_key(:distribution_id).inverse_of(:distribution) } it { is_expected.to have_many(:components).class_name("Packages::Debian::#{container.capitalize}Component").inverse_of(:distribution) } it { is_expected.to have_many(:architectures).class_name("Packages::Debian::#{container.capitalize}Architecture").inverse_of(:distribution) } end |