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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-07-20 12:08:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-20 12:08:42 +0300
commit65a0673d76bb86d6acca6dc3ab42dc91a04f56c2 (patch)
treeeb5691156a16c32f8d2e5f2bdec7b5aa582a2077 /spec/presenters/packages
parent83cddbd52370f2845a9083d7e82cd5539703611b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/presenters/packages')
-rw-r--r--spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb b/spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb
new file mode 100644
index 00000000000..09dd3ff7fe4
--- /dev/null
+++ b/spec/presenters/packages/nuget/v2/service_index_presenter_spec.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Packages::Nuget::V2::ServiceIndexPresenter, feature_category: :package_registry do
+ let_it_be(:project) { build_stubbed(:project) }
+ let_it_be(:group) { build_stubbed(:group) }
+
+ describe '#xml' do
+ let(:project_or_group) { project }
+ let(:presenter) { described_class.new(project_or_group) }
+ let(:xml_doc) { Nokogiri::XML::Document.parse(presenter.xml.to_xml) }
+ let(:service_node) { xml_doc.at_xpath('//xmlns:service') }
+
+ it { expect(xml_doc.root.name).to eq('service') }
+
+ it 'includes the workspace and collection nodes' do
+ workspace = xml_doc.at_xpath('//xmlns:service/xmlns:workspace')
+ collection = xml_doc.at_xpath('//xmlns:service/xmlns:workspace/xmlns:collection')
+
+ expect(workspace).to be_present
+ expect(workspace.children).to include(collection)
+ expect(collection).to be_present
+ end
+
+ it 'sets the appropriate XML namespaces on the root node' do
+ expect(service_node.namespaces['xmlns']).to eq('http://www.w3.org/2007/app')
+ expect(service_node.namespaces['xmlns:atom']).to eq('http://www.w3.org/2005/Atom')
+ end
+
+ context 'when the presenter is initialized with a project' do
+ it 'sets the XML base path correctly for a project scope' do
+ expect(service_node['xml:base']).to include(expected_xml_base(project))
+ end
+ end
+
+ context 'when the presenter is initialized with a group' do
+ let(:project_or_group) { group }
+
+ it 'sets the XML base path correctly for a group scope' do
+ expect(service_node['xml:base']).to include(expected_xml_base(group))
+ end
+ end
+ end
+
+ def expected_xml_base(project_or_group)
+ case project_or_group
+ when Project
+ api_v4_projects_packages_nuget_v2_path(id: project_or_group.id)
+ when Group
+ api_v4_groups___packages_nuget_v2_path(id: project_or_group.id)
+ end
+ end
+end