diff options
Diffstat (limited to 'spec/models/jira_connect_installation_spec.rb')
-rw-r--r-- | spec/models/jira_connect_installation_spec.rb | 98 |
1 files changed, 82 insertions, 16 deletions
diff --git a/spec/models/jira_connect_installation_spec.rb b/spec/models/jira_connect_installation_spec.rb index 9c1f7c678a9..e57d3e78a4e 100644 --- a/spec/models/jira_connect_installation_spec.rb +++ b/spec/models/jira_connect_installation_spec.rb @@ -20,29 +20,53 @@ RSpec.describe JiraConnectInstallation do it { is_expected.not_to allow_value('not/a/url').for(:instance_url) } end - describe '.for_project' do - let(:other_group) { create(:group) } - let(:parent_group) { create(:group) } - let(:group) { create(:group, parent: parent_group) } - let(:project) { create(:project, group: group) } + describe 'scopes' do + let_it_be(:jira_connect_subscription) { create(:jira_connect_subscription) } - subject { described_class.for_project(project) } + describe '.for_project' do + let_it_be(:other_group) { create(:group) } + let_it_be(:parent_group) { create(:group) } + let_it_be(:group) { create(:group, parent: parent_group) } + let_it_be(:project) { create(:project, group: group) } - it 'returns installations with subscriptions for project' do - sub_on_project_namespace = create(:jira_connect_subscription, namespace: group) - sub_on_ancestor_namespace = create(:jira_connect_subscription, namespace: parent_group) + subject { described_class.for_project(project) } - # Subscription on other group that shouldn't be returned - create(:jira_connect_subscription, namespace: other_group) + it 'returns installations with subscriptions for project' do + sub_on_project_namespace = create(:jira_connect_subscription, namespace: group) + sub_on_ancestor_namespace = create(:jira_connect_subscription, namespace: parent_group) - expect(subject).to contain_exactly(sub_on_project_namespace.installation, sub_on_ancestor_namespace.installation) + # Subscription on other group that shouldn't be returned + create(:jira_connect_subscription, namespace: other_group) + + expect(subject).to contain_exactly( + sub_on_project_namespace.installation, sub_on_ancestor_namespace.installation + ) + end + + it 'returns distinct installations' do + subscription = create(:jira_connect_subscription, namespace: group) + create(:jira_connect_subscription, namespace: parent_group, installation: subscription.installation) + + expect(subject).to contain_exactly(subscription.installation) + end end - it 'returns distinct installations' do - subscription = create(:jira_connect_subscription, namespace: group) - create(:jira_connect_subscription, namespace: parent_group, installation: subscription.installation) + describe '.direct_installations' do + subject { described_class.direct_installations } + + it { is_expected.to contain_exactly(jira_connect_subscription.installation) } + end + + describe '.proxy_installations' do + subject { described_class.proxy_installations } + + it { is_expected.to be_empty } - expect(subject).to contain_exactly(subscription.installation) + context 'with an installation on a self-managed instance' do + let_it_be(:installation) { create(:jira_connect_installation, instance_url: 'http://self-managed-gitlab.com') } + + it { is_expected.to contain_exactly(installation) } + end end end @@ -71,4 +95,46 @@ RSpec.describe JiraConnectInstallation do end end end + + describe 'audience_url' do + let_it_be(:installation) { create(:jira_connect_installation) } + + subject(:audience) { installation.audience_url } + + it { is_expected.to eq(nil) } + + context 'when proxy installation' do + let_it_be(:installation) { create(:jira_connect_installation, instance_url: 'https://example.com') } + + it { is_expected.to eq('https://example.com/-/jira_connect') } + end + end + + describe 'audience_installed_event_url' do + let_it_be(:installation) { create(:jira_connect_installation) } + + subject(:audience) { installation.audience_installed_event_url } + + it { is_expected.to eq(nil) } + + context 'when proxy installation' do + let_it_be(:installation) { create(:jira_connect_installation, instance_url: 'https://example.com') } + + it { is_expected.to eq('https://example.com/-/jira_connect/events/installed') } + end + end + + describe 'proxy?' do + let_it_be(:installation) { create(:jira_connect_installation) } + + subject { installation.proxy? } + + it { is_expected.to eq(false) } + + context 'when instance_url is present' do + let_it_be(:installation) { create(:jira_connect_installation, instance_url: 'https://example.com') } + + it { is_expected.to eq(true) } + end + end end |