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>2023-06-07 21:09:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-07 21:09:51 +0300
commit9ee2305f46a2b3d1d1e8a1f1182512599a74dbe1 (patch)
tree82c0631433839156f7d2fa88a5026c385b2b5703 /spec
parent9498dc957345829f29fe0bc4e55c969783b457be (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/groups/uploads_controller_spec.rb42
-rw-r--r--spec/factories/packages/helm/file_metadatum.rb6
-rw-r--r--spec/factories/packages/npm/metadata.rb10
-rw-r--r--spec/frontend/jobs/components/job/stages_dropdown_spec.js13
-rw-r--r--spec/frontend/pipelines/pipeline_details_header_spec.js22
-rw-r--r--spec/graphql/types/root_storage_statistics_type_spec.rb6
-rw-r--r--spec/models/packages/helm/file_metadatum_spec.rb8
-rw-r--r--spec/models/packages/npm/metadatum_spec.rb2
-rw-r--r--spec/models/snippet_spec.rb28
-rw-r--r--spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb8
-rw-r--r--spec/workers/packages/go/sync_packages_worker_spec.rb2
11 files changed, 117 insertions, 30 deletions
diff --git a/spec/controllers/groups/uploads_controller_spec.rb b/spec/controllers/groups/uploads_controller_spec.rb
index 645360289d1..6649e8f057c 100644
--- a/spec/controllers/groups/uploads_controller_spec.rb
+++ b/spec/controllers/groups/uploads_controller_spec.rb
@@ -40,8 +40,8 @@ RSpec.describe Groups::UploadsController do
let(:user) { create(:user) }
let(:jpg) { fixture_file_upload('spec/fixtures/rails_sample.jpg', 'image/jpg') }
let(:txt) { fixture_file_upload('spec/fixtures/doc_sample.txt', 'text/plain') }
- let(:secret) { FileUploader.generate_secret }
- let(:uploader_class) { FileUploader }
+ let(:uploader_class) { NamespaceFileUploader }
+ let(:secret) { uploader_class.generate_secret }
let(:upload_service) do
UploadService.new(model, jpg, uploader_class).execute
@@ -52,9 +52,9 @@ RSpec.describe Groups::UploadsController do
end
before do
- allow(FileUploader).to receive(:generate_secret).and_return(secret)
+ allow(uploader_class).to receive(:generate_secret).and_return(secret)
- allow_next_instance_of(FileUploader) do |instance|
+ allow_next_instance_of(uploader_class) do |instance|
allow(instance).to receive(:image?).and_return(true)
end
@@ -72,6 +72,40 @@ RSpec.describe Groups::UploadsController do
expect(response).to have_gitlab_http_status(:ok)
end
+
+ context 'when uploader class does not match the upload' do
+ let(:uploader_class) { FileUploader }
+
+ it 'responds with status 200 but logs a deprecation message' do
+ expect(Gitlab::AppJsonLogger).to receive(:info).with(
+ message: 'Deprecated usage of build_uploader_from_params',
+ uploader_class: uploader_class.name,
+ path: filename,
+ exists: true
+ )
+
+ show_upload
+
+ expect(response).to have_gitlab_http_status(:ok)
+ end
+ end
+
+ context 'when filename does not match' do
+ let(:invalid_filename) { 'invalid_filename.jpg' }
+
+ it 'responds with status 404 and logs a deprecation message' do
+ expect(Gitlab::AppJsonLogger).to receive(:info).with(
+ message: 'Deprecated usage of build_uploader_from_params',
+ uploader_class: uploader_class.name,
+ path: invalid_filename,
+ exists: false
+ )
+
+ get :show, params: params.merge(secret: secret, filename: invalid_filename)
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
end
context "when signed in" do
diff --git a/spec/factories/packages/helm/file_metadatum.rb b/spec/factories/packages/helm/file_metadatum.rb
index 590956e5d49..a15f9f386d5 100644
--- a/spec/factories/packages/helm/file_metadatum.rb
+++ b/spec/factories/packages/helm/file_metadatum.rb
@@ -10,9 +10,9 @@ FactoryBot.define do
sequence(:channel) { |n| "#{FFaker::Lorem.word}-#{n}" }
metadata do
{
- 'name': package_file.package.name,
- 'version': package_file.package.version,
- 'apiVersion': 'v2'
+ name: package_file.package.name,
+ version: package_file.package.version,
+ apiVersion: 'v2'
}.tap do |defaults|
defaults['description'] = description if description
end
diff --git a/spec/factories/packages/npm/metadata.rb b/spec/factories/packages/npm/metadata.rb
index c8acaa10199..dfdcc3409f9 100644
--- a/spec/factories/packages/npm/metadata.rb
+++ b/spec/factories/packages/npm/metadata.rb
@@ -6,11 +6,11 @@ FactoryBot.define do
package_json do
{
- 'name': package.name,
- 'version': package.version,
- 'dist': {
- 'tarball': 'http://localhost/tarball.tgz',
- 'shasum': '1234567890'
+ name: package.name,
+ version: package.version,
+ dist: {
+ tarball: 'http://localhost/tarball.tgz',
+ shasum: '1234567890'
}
}
end
diff --git a/spec/frontend/jobs/components/job/stages_dropdown_spec.js b/spec/frontend/jobs/components/job/stages_dropdown_spec.js
index 9d01dc50e96..c42edc62183 100644
--- a/spec/frontend/jobs/components/job/stages_dropdown_spec.js
+++ b/spec/frontend/jobs/components/job/stages_dropdown_spec.js
@@ -1,4 +1,4 @@
-import { GlDropdown, GlDropdownItem, GlLink, GlSprintf } from '@gitlab/ui';
+import { GlDisclosureDropdown, GlLink, GlSprintf } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import { Mousetrap } from '~/lib/mousetrap';
import { extendedWrapper } from 'helpers/vue_test_utils_helper';
@@ -16,8 +16,8 @@ describe('Stages Dropdown', () => {
let wrapper;
const findStatus = () => wrapper.findComponent(CiIcon);
- const findSelectedStageText = () => wrapper.findComponent(GlDropdown).props('text');
- const findStageItem = (index) => wrapper.findAllComponents(GlDropdownItem).at(index);
+ const findDropdown = () => wrapper.findComponent(GlDisclosureDropdown);
+ const findSelectedStageText = () => findDropdown().props('toggleText');
const findPipelineInfoText = () => wrapper.findByTestId('pipeline-info').text();
@@ -50,10 +50,13 @@ describe('Stages Dropdown', () => {
});
it('renders dropdown with stages', () => {
- expect(findStageItem(0).text()).toBe('build');
+ expect(findDropdown().props('items')).toEqual([
+ expect.objectContaining({ text: 'build' }),
+ expect.objectContaining({ text: 'test' }),
+ ]);
});
- it('rendes selected stage', () => {
+ it('renders selected stage', () => {
expect(findSelectedStageText()).toBe('deploy');
});
});
diff --git a/spec/frontend/pipelines/pipeline_details_header_spec.js b/spec/frontend/pipelines/pipeline_details_header_spec.js
index 828c90211ec..18ae7454a7b 100644
--- a/spec/frontend/pipelines/pipeline_details_header_spec.js
+++ b/spec/frontend/pipelines/pipeline_details_header_spec.js
@@ -1,9 +1,10 @@
-import { GlAlert, GlBadge, GlLoadingIcon, GlModal } from '@gitlab/ui';
+import { GlAlert, GlBadge, GlLoadingIcon, GlModal, GlSprintf } from '@gitlab/ui';
import Vue, { nextTick } from 'vue';
import VueApollo from 'vue-apollo';
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
+import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import PipelineDetailsHeader from '~/pipelines/components/pipeline_details_header.vue';
import { BUTTON_TOOLTIP_RETRY, BUTTON_TOOLTIP_CANCEL } from '~/pipelines/constants';
import TimeAgo from '~/pipelines/components/pipelines_list/time_ago.vue';
@@ -69,6 +70,7 @@ describe('Pipeline details header', () => {
const findCancelButton = () => wrapper.findByTestId('cancel-pipeline');
const findDeleteButton = () => wrapper.findByTestId('delete-pipeline');
const findDeleteModal = () => wrapper.findComponent(GlModal);
+ const findPipelineUserLink = () => wrapper.findByTestId('pipeline-user-link');
const defaultHandlers = [[getPipelineDetailsQuery, successHandler]];
@@ -123,6 +125,7 @@ describe('Pipeline details header', () => {
},
},
},
+ stubs: { GlSprintf },
apolloProvider: createMockApolloProvider(handlers),
});
};
@@ -177,6 +180,23 @@ describe('Pipeline details header', () => {
it('displays ref text', () => {
expect(findPipelineRefText()).toBe('Related merge request !1 to merge test');
});
+
+ it('displays pipeline user link with required user popover attributes', () => {
+ const {
+ data: {
+ project: {
+ pipeline: { user },
+ },
+ },
+ } = pipelineHeaderSuccess;
+
+ const userId = getIdFromGraphQLId(user.id).toString();
+
+ expect(findPipelineUserLink().classes()).toContain('js-user-link');
+ expect(findPipelineUserLink().attributes('data-user-id')).toBe(userId);
+ expect(findPipelineUserLink().attributes('data-username')).toBe(user.username);
+ expect(findPipelineUserLink().attributes('href')).toBe(user.webUrl);
+ });
});
describe('without pipeline name', () => {
diff --git a/spec/graphql/types/root_storage_statistics_type_spec.rb b/spec/graphql/types/root_storage_statistics_type_spec.rb
index 5dde6aa8b14..56f58825db0 100644
--- a/spec/graphql/types/root_storage_statistics_type_spec.rb
+++ b/spec/graphql/types/root_storage_statistics_type_spec.rb
@@ -7,9 +7,9 @@ RSpec.describe GitlabSchema.types['RootStorageStatistics'] do
it 'has all the required fields' do
expect(described_class).to have_graphql_fields(:storage_size, :repository_size, :lfs_objects_size,
- :build_artifacts_size, :packages_size, :wiki_size, :snippets_size,
- :pipeline_artifacts_size, :uploads_size, :dependency_proxy_size,
- :container_registry_size, :registry_size_estimated)
+ :build_artifacts_size, :packages_size, :wiki_size, :snippets_size,
+ :pipeline_artifacts_size, :uploads_size, :dependency_proxy_size,
+ :container_registry_size, :registry_size_estimated)
end
specify { expect(described_class).to require_graphql_authorizations(:read_statistics) }
diff --git a/spec/models/packages/helm/file_metadatum_spec.rb b/spec/models/packages/helm/file_metadatum_spec.rb
index 995179b391d..516b3fad940 100644
--- a/spec/models/packages/helm/file_metadatum_spec.rb
+++ b/spec/models/packages/helm/file_metadatum_spec.rb
@@ -49,11 +49,11 @@ RSpec.describe Packages::Helm::FileMetadatum, type: :model do
describe '#metadata' do
it 'validates #metadata', :aggregate_failures do
is_expected.not_to validate_presence_of(:metadata)
- is_expected.to allow_value({ 'name': 'foo', 'version': 'v1.0', 'apiVersion': 'v2' }).for(:metadata)
+ is_expected.to allow_value({ name: 'foo', version: 'v1.0', apiVersion: 'v2' }).for(:metadata)
is_expected.not_to allow_value({}).for(:metadata)
- is_expected.not_to allow_value({ 'version': 'v1.0', 'apiVersion': 'v2' }).for(:metadata)
- is_expected.not_to allow_value({ 'name': 'foo', 'apiVersion': 'v2' }).for(:metadata)
- is_expected.not_to allow_value({ 'name': 'foo', 'version': 'v1.0' }).for(:metadata)
+ is_expected.not_to allow_value({ version: 'v1.0', apiVersion: 'v2' }).for(:metadata)
+ is_expected.not_to allow_value({ name: 'foo', apiVersion: 'v2' }).for(:metadata)
+ is_expected.not_to allow_value({ name: 'foo', version: 'v1.0' }).for(:metadata)
end
end
end
diff --git a/spec/models/packages/npm/metadatum_spec.rb b/spec/models/packages/npm/metadatum_spec.rb
index 92daddded7e..418194bffdd 100644
--- a/spec/models/packages/npm/metadatum_spec.rb
+++ b/spec/models/packages/npm/metadatum_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe Packages::Npm::Metadatum, type: :model, feature_category: :packag
let(:valid_json) { { 'name' => 'foo', 'version' => 'v1.0', 'dist' => { 'tarball' => 'x', 'shasum' => 'x' } } }
it { is_expected.to allow_value(valid_json).for(:package_json) }
- it { is_expected.to allow_value(valid_json.merge('extra-field': { 'foo': 'bar' })).for(:package_json) }
+ it { is_expected.to allow_value(valid_json.merge('extra-field': { foo: 'bar' })).for(:package_json) }
it { is_expected.to allow_value(with_dist { |dist| dist.merge('extra-field': 'x') }).for(:package_json) }
%w[name version dist].each do |field|
diff --git a/spec/models/snippet_spec.rb b/spec/models/snippet_spec.rb
index a808c12a39a..4c6f1476481 100644
--- a/spec/models/snippet_spec.rb
+++ b/spec/models/snippet_spec.rb
@@ -805,6 +805,34 @@ RSpec.describe Snippet do
include_examples 'size checker for snippet'
end
+ describe '#hook_attrs' do
+ let_it_be(:snippet) { create(:personal_snippet, secret_token: 'foo') }
+
+ subject(:attrs) { snippet.hook_attrs }
+
+ it 'includes the expected attributes' do
+ is_expected.to match(
+ 'id' => snippet.id,
+ 'title' => snippet.title,
+ 'content' => snippet.content,
+ 'description' => snippet.description,
+ 'file_name' => snippet.file_name,
+ 'author_id' => snippet.author_id,
+ 'project_id' => snippet.project_id,
+ 'visibility_level' => snippet.visibility_level,
+ 'encrypted_secret_token' => snippet.encrypted_secret_token,
+ 'encrypted_secret_token_iv' => snippet.encrypted_secret_token_iv,
+ 'secret' => false,
+ 'secret_token' => nil,
+ 'repository_read_only' => snippet.repository_read_only?,
+ 'url' => Gitlab::UrlBuilder.build(snippet),
+ 'type' => 'PersonalSnippet',
+ 'created_at' => be_like_time(snippet.created_at),
+ 'updated_at' => be_like_time(snippet.updated_at)
+ )
+ end
+ end
+
describe '#can_cache_field?' do
using RSpec::Parameterized::TableSyntax
diff --git a/spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb b/spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb
index cee698d6dc5..7c48f324d24 100644
--- a/spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb
+++ b/spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb
@@ -10,9 +10,11 @@ RSpec.describe 'rendering namespace statistics', feature_category: :metrics do
let(:user) { create(:user) }
let(:query) do
- graphql_query_for('namespace',
- { 'fullPath' => namespace.full_path },
- "rootStorageStatistics { #{all_graphql_fields_for('RootStorageStatistics')} }")
+ graphql_query_for(
+ 'namespace',
+ { 'fullPath' => namespace.full_path },
+ "rootStorageStatistics { #{all_graphql_fields_for('RootStorageStatistics')} }"
+ )
end
shared_examples 'a working namespace with storage statistics query' do
diff --git a/spec/workers/packages/go/sync_packages_worker_spec.rb b/spec/workers/packages/go/sync_packages_worker_spec.rb
index 5fdb7a242f6..08962de0805 100644
--- a/spec/workers/packages/go/sync_packages_worker_spec.rb
+++ b/spec/workers/packages/go/sync_packages_worker_spec.rb
@@ -73,7 +73,7 @@ RSpec.describe Packages::Go::SyncPackagesWorker, type: :worker, feature_category
context 'with a package that exceeds project limits' do
before do
- Plan.default.actual_limits.update!({ 'golang_max_file_size': 1 })
+ Plan.default.actual_limits.update!({ golang_max_file_size: 1 })
end
it 'logs an exception' do