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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-15 03:10:46 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-15 03:10:46 +0300
commitd0ba8fad6dd850a76848a5032e7380a6db66748e (patch)
tree3fde17650968919f601592ebea17865d2c58b48a /spec
parent80088b7f88992a64ef5253d57838b0b3463ce8b1 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/fixtures/api/schemas/graphql/packages/package_details.json1
-rw-r--r--spec/fixtures/api/schemas/graphql/packages/package_nuget_metadata.json19
-rw-r--r--spec/graphql/types/packages/maven/metadatum_type_spec.rb13
-rw-r--r--spec/graphql/types/packages/nuget/metadatum_type_spec.rb13
-rw-r--r--spec/requests/api/graphql/packages/nuget_spec.rb74
5 files changed, 120 insertions, 0 deletions
diff --git a/spec/fixtures/api/schemas/graphql/packages/package_details.json b/spec/fixtures/api/schemas/graphql/packages/package_details.json
index 89e73d48c60..ca08e005e9d 100644
--- a/spec/fixtures/api/schemas/graphql/packages/package_details.json
+++ b/spec/fixtures/api/schemas/graphql/packages/package_details.json
@@ -82,6 +82,7 @@
{ "$ref": "./package_composer_metadata.json" },
{ "$ref": "./package_conan_metadata.json" },
{ "$ref": "./package_maven_metadata.json" },
+ { "$ref": "./package_nuget_metadata.json" },
{ "type": "null" }
]
},
diff --git a/spec/fixtures/api/schemas/graphql/packages/package_nuget_metadata.json b/spec/fixtures/api/schemas/graphql/packages/package_nuget_metadata.json
new file mode 100644
index 00000000000..131b9e97287
--- /dev/null
+++ b/spec/fixtures/api/schemas/graphql/packages/package_nuget_metadata.json
@@ -0,0 +1,19 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["id", "licenseUrl", "projectUrl", "iconUrl"],
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "licenseUrl": {
+ "type": "string"
+ },
+ "projectUrl": {
+ "type": "string"
+ },
+ "iconUrl": {
+ "type": "string"
+ }
+ }
+}
diff --git a/spec/graphql/types/packages/maven/metadatum_type_spec.rb b/spec/graphql/types/packages/maven/metadatum_type_spec.rb
new file mode 100644
index 00000000000..cf24af1456e
--- /dev/null
+++ b/spec/graphql/types/packages/maven/metadatum_type_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe GitlabSchema.types['MavenMetadata'] do
+ it 'includes maven metadatum fields' do
+ expected_fields = %w[
+ id created_at updated_at path app_group app_version app_name
+ ]
+
+ expect(described_class).to include_graphql_fields(*expected_fields)
+ end
+end
diff --git a/spec/graphql/types/packages/nuget/metadatum_type_spec.rb b/spec/graphql/types/packages/nuget/metadatum_type_spec.rb
new file mode 100644
index 00000000000..e5baa7522e4
--- /dev/null
+++ b/spec/graphql/types/packages/nuget/metadatum_type_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe GitlabSchema.types['NugetMetadata'] do
+ it 'includes nuget metadatum fields' do
+ expected_fields = %w[
+ id license_url project_url icon_url
+ ]
+
+ expect(described_class).to include_graphql_fields(*expected_fields)
+ end
+end
diff --git a/spec/requests/api/graphql/packages/nuget_spec.rb b/spec/requests/api/graphql/packages/nuget_spec.rb
new file mode 100644
index 00000000000..fa9d8a0e37e
--- /dev/null
+++ b/spec/requests/api/graphql/packages/nuget_spec.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe 'nuget package details' do
+ include GraphqlHelpers
+
+ let_it_be(:project) { create(:project) }
+ let_it_be(:nuget_package) { create(:nuget_package, :with_metadatum, project: project) }
+
+ let(:package_global_id) { global_id_of(nuget_package) }
+ let(:metadata) { query_graphql_fragment('NugetMetadata') }
+ let(:first_file) { nuget_package.package_files.find { |f| global_id_of(f) == first_file_response['id'] } }
+
+ let(:depth) { 3 }
+ let(:excluded) { %w[metadata apiFuzzingCiConfiguration pipeline packageFiles] }
+ let(:package_files) { all_graphql_fields_for('PackageFile') }
+
+ let(:user) { project.owner }
+ let(:package_details) { graphql_data_at(:package) }
+ let(:metadata_response) { graphql_data_at(:package, :metadata) }
+ let(:package_files_response) { graphql_data_at(:package, :package_files, :nodes) }
+ let(:first_file_response) { graphql_data_at(:package, :package_files, :nodes, 0)}
+
+ let(:query) do
+ graphql_query_for(:package, { id: package_global_id }, <<~FIELDS)
+ #{all_graphql_fields_for('PackageDetailsType', max_depth: depth, excluded: excluded)}
+ metadata {
+ #{metadata}
+ }
+ packageFiles {
+ nodes {
+ #{package_files}
+ }
+ }
+ FIELDS
+ end
+
+ subject { post_graphql(query, current_user: user) }
+
+ before do
+ subject
+ end
+
+ it_behaves_like 'a working graphql query' do
+ it 'matches the JSON schema' do
+ expect(package_details).to match_schema('graphql/packages/package_details')
+ end
+ end
+
+ it 'has the correct metadata' do
+ expect(metadata_response).to include(
+ 'id' => global_id_of(nuget_package.nuget_metadatum),
+ 'licenseUrl' => nuget_package.nuget_metadatum.license_url,
+ 'projectUrl' => nuget_package.nuget_metadatum.project_url,
+ 'iconUrl' => nuget_package.nuget_metadatum.icon_url
+ )
+ end
+
+ it 'has the right amount of files' do
+ expect(package_files_response.length).to be(nuget_package.package_files.length)
+ end
+
+ it 'has the basic package files data' do
+ expect(first_file_response).to include(
+ 'id' => global_id_of(first_file),
+ 'fileName' => first_file.file_name,
+ 'size' => first_file.size.to_s,
+ 'downloadPath' => first_file.download_path,
+ 'fileSha1' => first_file.file_sha1,
+ 'fileMd5' => first_file.file_md5,
+ 'fileSha256' => first_file.file_sha256
+ )
+ end
+end