Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/jira_connect_installation_spec.rb')
-rw-r--r--spec/models/jira_connect_installation_spec.rb98
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