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>2022-09-16 21:10:35 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-16 21:10:35 +0300
commit8e359577a7ec5e6a5e1e9f4db1114888c4b0c55a (patch)
tree32c2f4509d804f2e80796c4a6fdc765d7e6ae6de /spec
parent282e71d66029b153017dab5d33e735078c374c2e (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/confirmations_controller_spec.rb4
-rw-r--r--spec/controllers/registrations_controller_spec.rb5
-rw-r--r--spec/factories/packages/debian/component_file.rb6
-rw-r--r--spec/factories/protected_branches.rb12
-rw-r--r--spec/features/admin/admin_runners_spec.rb28
-rw-r--r--spec/features/invites_spec.rb1
-rw-r--r--spec/features/users/email_verification_on_login_spec.rb21
-rw-r--r--spec/features/users/login_spec.rb2
-rw-r--r--spec/features/users/signup_spec.rb1
-rw-r--r--spec/fixtures/packages/debian/distribution/OtherSHA2561
-rw-r--r--spec/frontend/analytics/usage_trends/utils_spec.js6
-rw-r--r--spec/frontend/batch_comments/components/preview_dropdown_spec.js2
-rw-r--r--spec/frontend/batch_comments/components/preview_item_spec.js2
-rw-r--r--spec/frontend/batch_comments/components/review_bar_spec.js4
-rw-r--r--spec/frontend/batch_comments/components/submit_dropdown_spec.js2
-rw-r--r--spec/frontend/boards/components/board_new_issue_spec.js2
-rw-r--r--spec/frontend/clusters_list/components/clusters_main_view_spec.js2
-rw-r--r--spec/frontend/code_navigation/utils/index_spec.js4
-rw-r--r--spec/frontend/cycle_analytics/value_stream_metrics_spec.js2
-rw-r--r--spec/frontend/deprecated_jquery_dropdown_spec.js4
-rw-r--r--spec/frontend/diffs/components/app_spec.js2
-rw-r--r--spec/frontend/diffs/components/tree_list_spec.js2
-rw-r--r--spec/frontend/editor/components/source_editor_toolbar_spec.js2
-rw-r--r--spec/frontend/editor/source_editor_instance_spec.js2
-rw-r--r--spec/frontend/emoji/components/utils_spec.js4
-rw-r--r--spec/frontend/environments/environment_table_spec.js2
-rw-r--r--spec/frontend/environments/new_environment_spec.js2
-rw-r--r--spec/frontend/error_tracking/components/error_tracking_list_spec.js6
-rw-r--r--spec/frontend/filtered_search/droplab/drop_down_spec.js12
-rw-r--r--spec/frontend/groups/components/group_item_spec.js4
-rw-r--r--spec/frontend/issues/create_merge_request_dropdown_spec.js2
-rw-r--r--spec/frontend/lib/utils/is_navigating_away_spec.js2
-rw-r--r--spec/frontend/lib/utils/navigation_utility_spec.js2
-rw-r--r--spec/frontend/merge_request_tabs_spec.js2
-rw-r--r--spec/frontend/monitoring/components/dashboard_panel_spec.js2
-rw-r--r--spec/frontend/monitoring/components/dashboard_spec.js6
-rw-r--r--spec/frontend/notes/components/discussion_resolve_with_issue_button_spec.js2
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/details/nuget_installation_spec.js2
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js4
-rw-r--r--spec/frontend/packages_and_registries/package_registry/pages/details_spec.js2
-rw-r--r--spec/frontend/pipelines/graph/graph_component_wrapper_spec.js2
-rw-r--r--spec/frontend/pipelines/graph/job_item_spec.js6
-rw-r--r--spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js2
-rw-r--r--spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/paginated_list_spec.js2
-rw-r--r--spec/frontend/vue_shared/security_reports/components/manage_via_mr_spec.js4
-rw-r--r--spec/graphql/types/branch_protections/merge_access_level_type_spec.rb2
-rw-r--r--spec/graphql/types/branch_rules/branch_protection_type_spec.rb (renamed from spec/graphql/types/branch_protection_type_spec.rb)2
-rw-r--r--spec/lib/gitlab/git/commit_spec.rb70
-rw-r--r--spec/requests/api/ci/runner/jobs_request_post_spec.rb21
-rw-r--r--spec/requests/api/debian_group_packages_spec.rb18
-rw-r--r--spec/requests/api/debian_project_packages_spec.rb18
-rw-r--r--spec/requests/api/rpm_project_packages_spec.rb41
-rw-r--r--spec/requests/verifies_with_email_spec.rb14
-rw-r--r--spec/services/packages/rpm/repository_metadata/base_builder_spec.rb22
-rw-r--r--spec/services/packages/rpm/repository_metadata/build_filelist_xml_spec.rb21
-rw-r--r--spec/services/packages/rpm/repository_metadata/build_other_xml_spec.rb21
-rw-r--r--spec/services/packages/rpm/repository_metadata/build_primary_xml_spec.rb21
-rw-r--r--spec/services/packages/rpm/repository_metadata/build_repomd_xml_spec.rb66
-rw-r--r--spec/services/users/email_verification/validate_token_service_spec.rb26
-rw-r--r--spec/support/helpers/usage_data_helpers.rb5
-rw-r--r--spec/support/seed.rb9
-rw-r--r--spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb11
-rw-r--r--spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb2
64 files changed, 411 insertions, 172 deletions
diff --git a/spec/controllers/confirmations_controller_spec.rb b/spec/controllers/confirmations_controller_spec.rb
index 5b137ada141..111bfb24c7e 100644
--- a/spec/controllers/confirmations_controller_spec.rb
+++ b/spec/controllers/confirmations_controller_spec.rb
@@ -129,6 +129,10 @@ RSpec.describe ConfirmationsController do
subject(:perform_request) { post(:create, params: { user: { email: user.email } }) }
+ before do
+ stub_feature_flags(identity_verification: false)
+ end
+
context 'when reCAPTCHA is disabled' do
before do
stub_application_setting(recaptcha_enabled: false)
diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb
index 2af04918882..637c774c38b 100644
--- a/spec/controllers/registrations_controller_spec.rb
+++ b/spec/controllers/registrations_controller_spec.rb
@@ -122,6 +122,7 @@ RSpec.describe RegistrationsController do
context 'when `send_user_confirmation_email` is true' do
before do
stub_application_setting(send_user_confirmation_email: true)
+ stub_feature_flags(identity_verification: false)
end
it 'sends a confirmation email' do
@@ -134,6 +135,10 @@ RSpec.describe RegistrationsController do
end
context 'email confirmation' do
+ before do
+ stub_feature_flags(identity_verification: false)
+ end
+
context 'when send_user_confirmation_email is false' do
it 'signs the user in' do
stub_application_setting(send_user_confirmation_email: false)
diff --git a/spec/factories/packages/debian/component_file.rb b/spec/factories/packages/debian/component_file.rb
index 7d447d00e15..a2422e4a126 100644
--- a/spec/factories/packages/debian/component_file.rb
+++ b/spec/factories/packages/debian/component_file.rb
@@ -38,6 +38,12 @@ FactoryBot.define do
file_fixture { 'spec/fixtures/packages/debian/distribution/D-I-Packages' }
end
+ trait(:older_sha256) do
+ created_at { '2020-01-24T08:00:00Z' }
+ file_sha256 { '157a1ad2b9102038560eea56771913b312ebf25093f5ef3b9842021c639c880d' }
+ file_fixture { 'spec/fixtures/packages/debian/distribution/OtherSHA256' }
+ end
+
trait(:object_storage) do
file_store { Packages::PackageFileUploader::Store::REMOTE }
end
diff --git a/spec/factories/protected_branches.rb b/spec/factories/protected_branches.rb
index 142ddb2b2c7..425352783dd 100644
--- a/spec/factories/protected_branches.rb
+++ b/spec/factories/protected_branches.rb
@@ -6,6 +6,7 @@ FactoryBot.define do
project
transient do
+ ee { false }
default_push_level { true }
default_merge_level { true }
default_access_level { true }
@@ -17,14 +18,11 @@ FactoryBot.define do
ProtectedBranches::CacheService.new(protected_branch.project).refresh
end
- after(:build) do |protected_branch, evaluator|
- if evaluator.default_access_level && evaluator.default_push_level
- protected_branch.push_access_levels.new(access_level: Gitlab::Access::MAINTAINER)
- end
+ after(:build) do |obj, ctx|
+ next if ctx.ee || !ctx.default_access_level
- if evaluator.default_access_level && evaluator.default_merge_level
- protected_branch.merge_access_levels.new(access_level: Gitlab::Access::MAINTAINER)
- end
+ obj.push_access_levels.new(access_level: Gitlab::Access::MAINTAINER) if ctx.default_push_level
+ obj.merge_access_levels.new(access_level: Gitlab::Access::MAINTAINER) if ctx.default_merge_level
end
trait :create_branch_on_repository do
diff --git a/spec/features/admin/admin_runners_spec.rb b/spec/features/admin/admin_runners_spec.rb
index 8228a58fdbb..fe9fd01d3d5 100644
--- a/spec/features/admin/admin_runners_spec.rb
+++ b/spec/features/admin/admin_runners_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe "Admin Runners" do
context "when there are runners" do
context "with an instance runner" do
- let!(:instance_runner) { create(:ci_runner, :instance) }
+ let_it_be(:instance_runner) { create(:ci_runner, :instance) }
before do
visit admin_runners_path
@@ -86,10 +86,12 @@ RSpec.describe "Admin Runners" do
end
describe 'search' do
- before do
+ before_all do
create(:ci_runner, :instance, description: 'runner-foo')
create(:ci_runner, :instance, description: 'runner-bar')
+ end
+ before do
visit admin_runners_path
end
@@ -130,10 +132,12 @@ RSpec.describe "Admin Runners" do
end
describe 'filter by paused' do
- before do
+ before_all do
create(:ci_runner, :instance, description: 'runner-active')
create(:ci_runner, :instance, description: 'runner-paused', active: false)
+ end
+ before do
visit admin_runners_path
end
@@ -164,15 +168,17 @@ RSpec.describe "Admin Runners" do
end
describe 'filter by status' do
- let!(:never_contacted) do
+ let_it_be(:never_contacted) do
create(:ci_runner, :instance, description: 'runner-never-contacted', contacted_at: nil)
end
- before do
+ before_all do
create(:ci_runner, :instance, description: 'runner-1', contacted_at: Time.zone.now)
create(:ci_runner, :instance, description: 'runner-2', contacted_at: Time.zone.now)
create(:ci_runner, :instance, description: 'runner-offline', contacted_at: 1.week.ago)
+ end
+ before do
visit admin_runners_path
end
@@ -238,7 +244,7 @@ RSpec.describe "Admin Runners" do
end
describe 'filter by type' do
- before do
+ before_all do
create(:ci_runner, :project, description: 'runner-project', projects: [project])
create(:ci_runner, :group, description: 'runner-group', groups: [group])
end
@@ -345,7 +351,7 @@ RSpec.describe "Admin Runners" do
end
describe 'filter by tag' do
- before do
+ before_all do
create(:ci_runner, :instance, description: 'runner-blue', tag_list: ['blue'])
create(:ci_runner, :instance, description: 'runner-red', tag_list: ['red'])
end
@@ -464,7 +470,7 @@ RSpec.describe "Admin Runners" do
end
describe "Runner show page", :js do
- let(:runner) do
+ let_it_be(:runner) do
create(
:ci_runner,
description: 'runner-foo',
@@ -520,9 +526,9 @@ RSpec.describe "Admin Runners" do
end
describe "Runner edit page" do
- let(:project_runner) { create(:ci_runner, :project) }
- let!(:project1) { create(:project) }
- let!(:project2) { create(:project) }
+ let_it_be(:project1) { create(:project) }
+ let_it_be(:project2) { create(:project) }
+ let_it_be(:project_runner) { create(:ci_runner, :project) }
before do
visit edit_admin_runner_path(project_runner)
diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb
index a86e4cead48..34990a53b51 100644
--- a/spec/features/invites_spec.rb
+++ b/spec/features/invites_spec.rb
@@ -246,6 +246,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
before do
stub_feature_flags(soft_email_confirmation: false)
allow(User).to receive(:allow_unconfirmed_access_for).and_return 0
+ stub_feature_flags(identity_verification: false)
end
it 'signs up and redirects to the group activity page' do
diff --git a/spec/features/users/email_verification_on_login_spec.rb b/spec/features/users/email_verification_on_login_spec.rb
index 1bfc59c3e73..f7102eaf9b7 100644
--- a/spec/features/users/email_verification_on_login_spec.rb
+++ b/spec/features/users/email_verification_on_login_spec.rb
@@ -118,7 +118,7 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
# Expect an error message
expect_log_message('Failed Attempt', reason: 'rate_limited')
expect(page).to have_content("You've reached the maximum amount of tries. "\
- 'Wait 10 minutes or resend a new code and try again.')
+ 'Wait 10 minutes or send a new code and try again.')
# Wait for 10 minutes
travel 10.minutes
@@ -138,7 +138,7 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
# Expect an error message
expect_log_message('Failed Attempt', reason: 'invalid')
- expect(page).to have_content('The code is incorrect. Enter it again, or resend a new code.')
+ expect(page).to have_content('The code is incorrect. Enter it again, or send a new code.')
end
it 'verifies expired codes' do
@@ -155,7 +155,7 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
# Expect an error message
expect_log_message('Failed Attempt', reason: 'expired')
- expect(page).to have_content('The code has expired. Resend a new code and try again.')
+ expect(page).to have_content('The code has expired. Send a new code and try again.')
end
end
end
@@ -255,7 +255,7 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
perform_enqueued_jobs do
# The user is prompted for a verification code
gitlab_sign_in(user)
- expect(page).to have_content('Help us protect your account')
+ expect(page).to have_content(s_('IdentityVerification|Help us protect your account'))
code = expect_instructions_email_and_extract_code
# We toggle the feature flag off
@@ -266,12 +266,13 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
new_code = expect_instructions_email_and_extract_code
verify_code(code)
- expect(page).to have_content('The code is incorrect. Enter it again, or resend a new code.')
+ expect(page)
+ .to have_content(s_('IdentityVerification|The code is incorrect. Enter it again, or send a new code.'))
travel Users::EmailVerification::ValidateTokenService::TOKEN_VALID_FOR_MINUTES.minutes + 1.second
verify_code(new_code)
- expect(page).to have_content('The code has expired. Resend a new code and try again.')
+ expect(page).to have_content(s_('IdentityVerification|The code has expired. Send a new code and try again.'))
click_link 'Resend code'
another_code = expect_instructions_email_and_extract_code
@@ -296,7 +297,7 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
it 'the unlock link still works' do
# The user is locked and unlock instructions are sent
- expect(page).to have_content('Invalid login or password.')
+ expect(page).to have_content(_('Invalid login or password.'))
user.reload
expect(user.locked_at).not_to be_nil
expect(user.unlock_token).not_to be_nil
@@ -334,15 +335,15 @@ RSpec.describe 'Email Verification On Login', :clean_gitlab_redis_rate_limiting
def expect_instructions_email_and_extract_code
mail = find_email_for(user)
expect(mail.to).to match_array([user.email])
- expect(mail.subject).to eq('Verify your identity')
+ expect(mail.subject).to eq(s_('IdentityVerification|Verify your identity'))
code = mail.body.parts.first.to_s[/\d{#{Users::EmailVerification::GenerateTokenService::TOKEN_LENGTH}}/o]
reset_delivered_emails!
code
end
def verify_code(code)
- fill_in 'Verification code', with: code
- click_button 'Verify code'
+ fill_in s_('IdentityVerification|Verification code'), with: code
+ click_button s_('IdentityVerification|Verify code')
end
def expect_log_message(event = nil, times = 1, reason: '', message: nil)
diff --git a/spec/features/users/login_spec.rb b/spec/features/users/login_spec.rb
index 4c294063a4e..5ca5bd72b79 100644
--- a/spec/features/users/login_spec.rb
+++ b/spec/features/users/login_spec.rb
@@ -105,6 +105,7 @@ RSpec.describe 'Login', :clean_gitlab_redis_sessions do
before do
stub_application_setting(send_user_confirmation_email: true)
allow(User).to receive(:allow_unconfirmed_access_for).and_return grace_period
+ stub_feature_flags(identity_verification: false)
end
context 'within the grace period' do
@@ -954,6 +955,7 @@ RSpec.describe 'Login', :clean_gitlab_redis_sessions do
before do
stub_application_setting(send_user_confirmation_email: true)
stub_feature_flags(soft_email_confirmation: true)
+ stub_feature_flags(identity_verification: false)
allow(User).to receive(:allow_unconfirmed_access_for).and_return grace_period
end
diff --git a/spec/features/users/signup_spec.rb b/spec/features/users/signup_spec.rb
index 998570da8b2..de53e722603 100644
--- a/spec/features/users/signup_spec.rb
+++ b/spec/features/users/signup_spec.rb
@@ -203,6 +203,7 @@ RSpec.describe 'Signup' do
context 'when soft email confirmation is not enabled' do
before do
stub_feature_flags(soft_email_confirmation: false)
+ stub_feature_flags(identity_verification: false)
end
it 'creates the user account and sends a confirmation email, and pre-fills email address after confirming' do
diff --git a/spec/fixtures/packages/debian/distribution/OtherSHA256 b/spec/fixtures/packages/debian/distribution/OtherSHA256
new file mode 100644
index 00000000000..5c282d72c11
--- /dev/null
+++ b/spec/fixtures/packages/debian/distribution/OtherSHA256
@@ -0,0 +1 @@
+Other SHA256 \ No newline at end of file
diff --git a/spec/frontend/analytics/usage_trends/utils_spec.js b/spec/frontend/analytics/usage_trends/utils_spec.js
index 656f310dda7..9982e96735e 100644
--- a/spec/frontend/analytics/usage_trends/utils_spec.js
+++ b/spec/frontend/analytics/usage_trends/utils_spec.js
@@ -16,17 +16,17 @@ describe('getAverageByMonth', () => {
expect(getAverageByMonth(mockCountsData2)).toStrictEqual(countsMonthlyChartData2);
});
- it('it transforms a data point to the first of the month', () => {
+ it('transforms a data point to the first of the month', () => {
const item = mockCountsData1[0];
const firstOfTheMonth = item.recordedAt.replace(/-[0-9]{2}$/, '-01');
expect(getAverageByMonth([item])).toStrictEqual([[firstOfTheMonth, item.count]]);
});
- it('it uses sane defaults', () => {
+ it('uses sane defaults', () => {
expect(getAverageByMonth()).toStrictEqual([]);
});
- it('it errors when passing null', () => {
+ it('errors when passing null', () => {
expect(() => {
getAverageByMonth(null);
}).toThrow();
diff --git a/spec/frontend/batch_comments/components/preview_dropdown_spec.js b/spec/frontend/batch_comments/components/preview_dropdown_spec.js
index 079b64225e4..283632cb560 100644
--- a/spec/frontend/batch_comments/components/preview_dropdown_spec.js
+++ b/spec/frontend/batch_comments/components/preview_dropdown_spec.js
@@ -53,7 +53,7 @@ describe('Batch comments preview dropdown', () => {
});
describe('clicking draft', () => {
- it('it toggles active file when viewDiffsFileByFile is true', async () => {
+ it('toggles active file when viewDiffsFileByFile is true', async () => {
factory({
viewDiffsFileByFile: true,
sortedDrafts: [{ id: 1, file_hash: 'hash' }],
diff --git a/spec/frontend/batch_comments/components/preview_item_spec.js b/spec/frontend/batch_comments/components/preview_item_spec.js
index cb71edd1238..91e6b84a216 100644
--- a/spec/frontend/batch_comments/components/preview_item_spec.js
+++ b/spec/frontend/batch_comments/components/preview_item_spec.js
@@ -118,7 +118,7 @@ describe('Batch comments draft preview item component', () => {
);
});
- it('it renders thread resolved text', () => {
+ it('renders thread resolved text', () => {
expect(vm.$el.querySelector('.draft-note-resolution').textContent).toContain(
'Thread will be resolved',
);
diff --git a/spec/frontend/batch_comments/components/review_bar_spec.js b/spec/frontend/batch_comments/components/review_bar_spec.js
index f50db6ab210..0a4c9ff62e4 100644
--- a/spec/frontend/batch_comments/components/review_bar_spec.js
+++ b/spec/frontend/batch_comments/components/review_bar_spec.js
@@ -24,7 +24,7 @@ describe('Batch comments review bar component', () => {
wrapper.destroy();
});
- it('it adds review-bar-visible class to body when review bar is mounted', async () => {
+ it('adds review-bar-visible class to body when review bar is mounted', async () => {
expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false);
createComponent();
@@ -32,7 +32,7 @@ describe('Batch comments review bar component', () => {
expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(true);
});
- it('it removes review-bar-visible class to body when review bar is destroyed', async () => {
+ it('removes review-bar-visible class to body when review bar is destroyed', async () => {
createComponent();
wrapper.destroy();
diff --git a/spec/frontend/batch_comments/components/submit_dropdown_spec.js b/spec/frontend/batch_comments/components/submit_dropdown_spec.js
index b28e6d68e40..462ef7e7280 100644
--- a/spec/frontend/batch_comments/components/submit_dropdown_spec.js
+++ b/spec/frontend/batch_comments/components/submit_dropdown_spec.js
@@ -92,7 +92,7 @@ describe('Batch comments submit dropdown', () => {
canApprove | exists | existsText
${true} | ${true} | ${'shows'}
${false} | ${false} | ${'hides'}
- `('it $existsText approve checkbox if can_approve is $canApprove', ({ canApprove, exists }) => {
+ `('$existsText approve checkbox if can_approve is $canApprove', ({ canApprove, exists }) => {
factory({ canApprove });
expect(wrapper.findByTestId('approve_merge_request').exists()).toBe(exists);
diff --git a/spec/frontend/boards/components/board_new_issue_spec.js b/spec/frontend/boards/components/board_new_issue_spec.js
index 8b0100d069a..f097f42476a 100644
--- a/spec/frontend/boards/components/board_new_issue_spec.js
+++ b/spec/frontend/boards/components/board_new_issue_spec.js
@@ -90,7 +90,7 @@ describe('Issue boards new issue form', () => {
});
});
- it('it uses the first issue ID as moveAfterId', async () => {
+ it('uses the first issue ID as moveAfterId', async () => {
findBoardNewItem().vm.$emit('form-submit', { title: 'Foo' });
await nextTick();
diff --git a/spec/frontend/clusters_list/components/clusters_main_view_spec.js b/spec/frontend/clusters_list/components/clusters_main_view_spec.js
index 218463b9adf..6f23ed47d2a 100644
--- a/spec/frontend/clusters_list/components/clusters_main_view_spec.js
+++ b/spec/frontend/clusters_list/components/clusters_main_view_spec.js
@@ -142,7 +142,7 @@ describe('ClustersMainViewComponent', () => {
createWrapper({ certificateBasedClustersEnabled: false });
});
- it('it displays only the Agent tab', () => {
+ it('displays only the Agent tab', () => {
expect(findAllTabs()).toHaveLength(1);
const agentTab = findGlTabAtIndex(0);
diff --git a/spec/frontend/code_navigation/utils/index_spec.js b/spec/frontend/code_navigation/utils/index_spec.js
index b8448709f0b..700c912029c 100644
--- a/spec/frontend/code_navigation/utils/index_spec.js
+++ b/spec/frontend/code_navigation/utils/index_spec.js
@@ -17,7 +17,7 @@ describe('getCurrentHoverElement', () => {
value
${'test'}
${undefined}
- `('it returns cached current key', ({ value }) => {
+ `('returns cached current key', ({ value }) => {
if (value) {
cachedData.set('current', value);
}
@@ -52,7 +52,7 @@ describe('addInteractionClass', () => {
${1} | ${0} | ${0}
${1} | ${0} | ${0}
`(
- 'it sets code navigation attributes for line $line and character $char',
+ 'sets code navigation attributes for line $line and character $char',
({ line, char, index }) => {
addInteractionClass({ path: 'index.js', d: { start_line: line, start_char: char } });
diff --git a/spec/frontend/cycle_analytics/value_stream_metrics_spec.js b/spec/frontend/cycle_analytics/value_stream_metrics_spec.js
index 23e41f35b00..9c8cd6a3dbc 100644
--- a/spec/frontend/cycle_analytics/value_stream_metrics_spec.js
+++ b/spec/frontend/cycle_analytics/value_stream_metrics_spec.js
@@ -176,7 +176,7 @@ describe('ValueStreamMetrics', () => {
await waitForPromises();
});
- it('it should render an error message', () => {
+ it('should render an error message', () => {
expect(createFlash).toHaveBeenCalledWith({
message: `There was an error while fetching value stream analytics ${fakeReqName} data.`,
});
diff --git a/spec/frontend/deprecated_jquery_dropdown_spec.js b/spec/frontend/deprecated_jquery_dropdown_spec.js
index b18d53b317d..4a070395eaf 100644
--- a/spec/frontend/deprecated_jquery_dropdown_spec.js
+++ b/spec/frontend/deprecated_jquery_dropdown_spec.js
@@ -314,7 +314,7 @@ describe('deprecatedJQueryDropdown', () => {
});
describe('with a trackSuggestionsClickedLabel', () => {
- it('it includes data-track attributes', () => {
+ it('includes data-track attributes', () => {
const dropdown = dropdownWithOptions({
trackSuggestionClickedLabel: 'some_value_for_label',
});
@@ -333,7 +333,7 @@ describe('deprecatedJQueryDropdown', () => {
expect(link).toHaveAttr('data-track-property', 'suggestion-category');
});
- it('it defaults property to no_category when category not provided', () => {
+ it('defaults property to no_category when category not provided', () => {
const dropdown = dropdownWithOptions({
trackSuggestionClickedLabel: 'some_value_for_label',
});
diff --git a/spec/frontend/diffs/components/app_spec.js b/spec/frontend/diffs/components/app_spec.js
index 2b1bf19471a..b88206c3b9a 100644
--- a/spec/frontend/diffs/components/app_spec.js
+++ b/spec/frontend/diffs/components/app_spec.js
@@ -682,7 +682,7 @@ describe('diffs/components/app', () => {
${'123'} | ${2}
${'312'} | ${1}
`(
- 'it calls navigateToDiffFileIndex with $index when $link is clicked',
+ 'calls navigateToDiffFileIndex with $index when $link is clicked',
async ({ currentDiffFileId, targetFile }) => {
createComponent({ fileByFileUserPreference: true }, ({ state }) => {
state.diffs.diffFiles.push({ file_hash: '123' }, { file_hash: '312' });
diff --git a/spec/frontend/diffs/components/tree_list_spec.js b/spec/frontend/diffs/components/tree_list_spec.js
index 2e37425519d..ca7de8fd751 100644
--- a/spec/frontend/diffs/components/tree_list_spec.js
+++ b/spec/frontend/diffs/components/tree_list_spec.js
@@ -106,7 +106,7 @@ describe('Diffs tree list component', () => {
${'index.js'} | ${1}
${'app/*.js'} | ${1}
${'*.js, *.rb'} | ${2}
- `('it returns $itemSize item for $extension', async ({ extension, itemSize }) => {
+ `('returns $itemSize item for $extension', async ({ extension, itemSize }) => {
wrapper.find('[data-testid="diff-tree-search"]').setValue(extension);
await nextTick();
diff --git a/spec/frontend/editor/components/source_editor_toolbar_spec.js b/spec/frontend/editor/components/source_editor_toolbar_spec.js
index 6e99eadbd97..bead39ca744 100644
--- a/spec/frontend/editor/components/source_editor_toolbar_spec.js
+++ b/spec/frontend/editor/components/source_editor_toolbar_spec.js
@@ -68,7 +68,7 @@ describe('Source Editor Toolbar', () => {
});
describe('buttons update', () => {
- it('it properly updates buttons on Apollo cache update', async () => {
+ it('properly updates buttons on Apollo cache update', async () => {
const item = buildButton('first', {
group: EDITOR_TOOLBAR_RIGHT_GROUP,
});
diff --git a/spec/frontend/editor/source_editor_instance_spec.js b/spec/frontend/editor/source_editor_instance_spec.js
index 3ac77da5729..20ba23d56ff 100644
--- a/spec/frontend/editor/source_editor_instance_spec.js
+++ b/spec/frontend/editor/source_editor_instance_spec.js
@@ -382,7 +382,7 @@ describe('Source Editor Instance', () => {
},
);
- it('it does not remove entry from the global registry to keep for potential future re-use', () => {
+ it('does not remove entry from the global registry to keep for potential future re-use', () => {
const extensionStore = new Map();
seInstance = new SourceEditorInstance({}, extensionStore);
const extensions = seInstance.use(fullExtensionsArray);
diff --git a/spec/frontend/emoji/components/utils_spec.js b/spec/frontend/emoji/components/utils_spec.js
index 56f514ee9a8..a17ddb3bb9a 100644
--- a/spec/frontend/emoji/components/utils_spec.js
+++ b/spec/frontend/emoji/components/utils_spec.js
@@ -4,13 +4,13 @@ import { getFrequentlyUsedEmojis, addToFrequentlyUsed } from '~/emoji/components
jest.mock('~/lib/utils/cookies');
describe('getFrequentlyUsedEmojis', () => {
- it('it returns null when no saved emojis set', () => {
+ it('returns null when no saved emojis set', () => {
jest.spyOn(Cookies, 'get').mockReturnValue(null);
expect(getFrequentlyUsedEmojis()).toBe(null);
});
- it('it returns frequently used emojis object', () => {
+ it('returns frequently used emojis object', () => {
jest.spyOn(Cookies, 'get').mockReturnValue('thumbsup,thumbsdown');
expect(getFrequentlyUsedEmojis()).toEqual({
diff --git a/spec/frontend/environments/environment_table_spec.js b/spec/frontend/environments/environment_table_spec.js
index 49a643aaac8..a86cfdd56ba 100644
--- a/spec/frontend/environments/environment_table_spec.js
+++ b/spec/frontend/environments/environment_table_spec.js
@@ -363,7 +363,7 @@ describe('Environment table', () => {
});
describe('sortedEnvironments', () => {
- it('it should sort children as well', () => {
+ it('should sort children as well', () => {
const mockItems = [
{
name: 'production',
diff --git a/spec/frontend/environments/new_environment_spec.js b/spec/frontend/environments/new_environment_spec.js
index 5a1c1c7714c..2405cb82eac 100644
--- a/spec/frontend/environments/new_environment_spec.js
+++ b/spec/frontend/environments/new_environment_spec.js
@@ -65,7 +65,7 @@ describe('~/environments/components/new.vue', () => {
input | value
${() => name} | ${'test'}
${() => url} | ${'https://example.org'}
- `('it changes the value of the input to $value', async ({ input, value }) => {
+ `('changes the value of the input to $value', async ({ input, value }) => {
await input().setValue(value);
expect(input().element.value).toBe(value);
diff --git a/spec/frontend/error_tracking/components/error_tracking_list_spec.js b/spec/frontend/error_tracking/components/error_tracking_list_spec.js
index b7dffbbec04..805ada54509 100644
--- a/spec/frontend/error_tracking/components/error_tracking_list_spec.js
+++ b/spec/frontend/error_tracking/components/error_tracking_list_spec.js
@@ -164,19 +164,19 @@ describe('ErrorTrackingList', () => {
expect(findSortDropdown().exists()).toBe(true);
});
- it('it searches by query', () => {
+ it('searches by query', () => {
findSearchBox().vm.$emit('input', 'search');
findSearchBox().trigger('keyup.enter');
expect(actions.searchByQuery.mock.calls[0][1]).toBe('search');
});
- it('it sorts by fields', () => {
+ it('sorts by fields', () => {
const findSortItem = () => findSortDropdown().find('.dropdown-item');
findSortItem().trigger('click');
expect(actions.sortByField).toHaveBeenCalled();
});
- it('it filters by status', () => {
+ it('filters by status', () => {
const findStatusFilter = () => findStatusFilterDropdown().find('.dropdown-item');
findStatusFilter().trigger('click');
expect(actions.filterByStatus).toHaveBeenCalled();
diff --git a/spec/frontend/filtered_search/droplab/drop_down_spec.js b/spec/frontend/filtered_search/droplab/drop_down_spec.js
index f49dbfcf79c..6fbb4394944 100644
--- a/spec/frontend/filtered_search/droplab/drop_down_spec.js
+++ b/spec/frontend/filtered_search/droplab/drop_down_spec.js
@@ -557,11 +557,11 @@ describe('DropLab DropDown', () => {
DropDown.prototype.show.call(testContext.dropdown);
});
- it('it should set .list display to block', () => {
+ it('should set .list display to block', () => {
expect(testContext.list.style.display).toBe('block');
});
- it('it should set .hidden to false', () => {
+ it('should set .hidden to false', () => {
expect(testContext.dropdown.hidden).toBe(false);
});
@@ -591,11 +591,11 @@ describe('DropLab DropDown', () => {
DropDown.prototype.hide.call(testContext.dropdown);
});
- it('it should set .list display to none', () => {
+ it('should set .list display to none', () => {
expect(testContext.list.style.display).toBe('none');
});
- it('it should set .hidden to true', () => {
+ it('should set .hidden to true', () => {
expect(testContext.dropdown.hidden).toBe(true);
});
});
@@ -648,11 +648,11 @@ describe('DropLab DropDown', () => {
DropDown.prototype.destroy.call(testContext.dropdown);
});
- it('it should call .hide', () => {
+ it('should call .hide', () => {
expect(testContext.dropdown.hide).toHaveBeenCalled();
});
- it('it should call .removeEventListener', () => {
+ it('should call .removeEventListener', () => {
expect(testContext.list.removeEventListener).toHaveBeenCalledWith(
'click',
testContext.eventWrapper.clickEvent,
diff --git a/spec/frontend/groups/components/group_item_spec.js b/spec/frontend/groups/components/group_item_spec.js
index fcf305d60e6..3aa66644c19 100644
--- a/spec/frontend/groups/components/group_item_spec.js
+++ b/spec/frontend/groups/components/group_item_spec.js
@@ -274,7 +274,7 @@ describe('GroupItemComponent', () => {
${'itemscope'} | ${'itemscope'}
${'itemtype'} | ${'https://schema.org/Organization'}
${'itemprop'} | ${'subOrganization'}
- `('it does set correct $attr', ({ attr, value } = {}) => {
+ `('does set correct $attr', ({ attr, value } = {}) => {
expect(wrapper.attributes(attr)).toBe(value);
});
@@ -283,7 +283,7 @@ describe('GroupItemComponent', () => {
${'img'} | ${'logo'}
${'[data-testid="group-name"]'} | ${'name'}
${'[data-testid="group-description"]'} | ${'description'}
- `('it does set correct $selector', ({ selector, propValue } = {}) => {
+ `('does set correct $selector', ({ selector, propValue } = {}) => {
expect(wrapper.find(selector).attributes('itemprop')).toBe(propValue);
});
});
diff --git a/spec/frontend/issues/create_merge_request_dropdown_spec.js b/spec/frontend/issues/create_merge_request_dropdown_spec.js
index cb7173c56a8..cc2ee84348a 100644
--- a/spec/frontend/issues/create_merge_request_dropdown_spec.js
+++ b/spec/frontend/issues/create_merge_request_dropdown_spec.js
@@ -106,7 +106,7 @@ describe('CreateMergeRequestDropdown', () => {
loading | hasClass
${true} | ${false}
${false} | ${true}
- `('it toggle loading spinner when loading is $loading', ({ loading, hasClass }) => {
+ `('toggle loading spinner when loading is $loading', ({ loading, hasClass }) => {
dropdown.setLoading(loading);
expect(document.querySelector('.js-spinner').classList.contains('gl-display-none')).toEqual(
diff --git a/spec/frontend/lib/utils/is_navigating_away_spec.js b/spec/frontend/lib/utils/is_navigating_away_spec.js
index e1230fe96bf..b8a01a1706c 100644
--- a/spec/frontend/lib/utils/is_navigating_away_spec.js
+++ b/spec/frontend/lib/utils/is_navigating_away_spec.js
@@ -6,7 +6,7 @@ describe('isNavigatingAway', () => {
setNavigatingForTestsOnly(false);
});
- it.each([false, true])('it returns the navigation flag with value %s', (flag) => {
+ it.each([false, true])('returns the navigation flag with value %s', (flag) => {
setNavigatingForTestsOnly(flag);
expect(isNavigatingAway()).toEqual(flag);
});
diff --git a/spec/frontend/lib/utils/navigation_utility_spec.js b/spec/frontend/lib/utils/navigation_utility_spec.js
index 6d3a871eb33..4dbd50223d5 100644
--- a/spec/frontend/lib/utils/navigation_utility_spec.js
+++ b/spec/frontend/lib/utils/navigation_utility_spec.js
@@ -63,7 +63,7 @@ describe('initPrefetchLinks', () => {
expect(newLink.addEventListener).toHaveBeenCalled();
});
- it('it is not fired when less then 100ms over link', () => {
+ it('is not fired when less then 100ms over link', () => {
const mouseOverEvent = new Event('mouseover');
const mouseOutEvent = new Event('mouseout');
diff --git a/spec/frontend/merge_request_tabs_spec.js b/spec/frontend/merge_request_tabs_spec.js
index 2001bb5f95e..c6e90a4b20d 100644
--- a/spec/frontend/merge_request_tabs_spec.js
+++ b/spec/frontend/merge_request_tabs_spec.js
@@ -333,7 +333,7 @@ describe('MergeRequestTabs', () => {
${'show'} | ${false} | ${'shows'}
${'diffs'} | ${true} | ${'hides'}
${'commits'} | ${true} | ${'hides'}
- `('it $hidesText expand button on $tab tab', ({ tab, hides }) => {
+ `('$hidesText expand button on $tab tab', ({ tab, hides }) => {
window.gon = { features: { movedMrSidebar: true } };
const expandButton = document.createElement('div');
diff --git a/spec/frontend/monitoring/components/dashboard_panel_spec.js b/spec/frontend/monitoring/components/dashboard_panel_spec.js
index d797d9e2ad0..339c1710a9e 100644
--- a/spec/frontend/monitoring/components/dashboard_panel_spec.js
+++ b/spec/frontend/monitoring/components/dashboard_panel_spec.js
@@ -430,7 +430,7 @@ describe('Dashboard Panel', () => {
expect(findTimeChart().props().projectPath).toBe(mockProjectPath);
});
- it('it renders a time series chart with no errors', () => {
+ it('renders a time series chart with no errors', () => {
expect(wrapper.findComponent(MonitorTimeSeriesChart).exists()).toBe(true);
});
});
diff --git a/spec/frontend/monitoring/components/dashboard_spec.js b/spec/frontend/monitoring/components/dashboard_spec.js
index 608404e5c5b..6109b40eee2 100644
--- a/spec/frontend/monitoring/components/dashboard_spec.js
+++ b/spec/frontend/monitoring/components/dashboard_spec.js
@@ -407,7 +407,7 @@ describe('Dashboard', () => {
await nextTick();
});
- it('it does not show loading icons in any group', async () => {
+ it('does not show loading icons in any group', async () => {
setupStoreWithData(store);
await nextTick();
@@ -614,7 +614,7 @@ describe('Dashboard', () => {
const findFirstDraggableRemoveButton = () =>
findDraggablePanels().at(0).find('.js-draggable-remove');
- it('it enables draggables', async () => {
+ it('enables draggables', async () => {
findRearrangeButton().vm.$emit('click');
await nextTick();
@@ -656,7 +656,7 @@ describe('Dashboard', () => {
expect(findDraggablePanels().length).toEqual(metricsDashboardPanelCount - 1);
});
- it('it disables draggables when clicked again', async () => {
+ it('disables draggables when clicked again', async () => {
findRearrangeButton().vm.$emit('click');
await nextTick();
diff --git a/spec/frontend/notes/components/discussion_resolve_with_issue_button_spec.js b/spec/frontend/notes/components/discussion_resolve_with_issue_button_spec.js
index 71406eeb7b4..a185f11ffaa 100644
--- a/spec/frontend/notes/components/discussion_resolve_with_issue_button_spec.js
+++ b/spec/frontend/notes/components/discussion_resolve_with_issue_button_spec.js
@@ -19,7 +19,7 @@ describe('ResolveWithIssueButton', () => {
wrapper.destroy();
});
- it('it should have a link with the provided link property as href', () => {
+ it('should have a link with the provided link property as href', () => {
const button = wrapper.findComponent(GlButton);
expect(button.attributes().href).toBe(url);
diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/nuget_installation_spec.js b/spec/frontend/packages_and_registries/package_registry/components/details/nuget_installation_spec.js
index d324d43258c..9449c40c7c6 100644
--- a/spec/frontend/packages_and_registries/package_registry/components/details/nuget_installation_spec.js
+++ b/spec/frontend/packages_and_registries/package_registry/components/details/nuget_installation_spec.js
@@ -71,7 +71,7 @@ describe('NugetInstallation', () => {
});
});
- it('it has docs link', () => {
+ it('has docs link', () => {
expect(findSetupDocsLink().attributes()).toMatchObject({
href: NUGET_HELP_PATH,
target: '_blank',
diff --git a/spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js b/spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js
index 9268dd0b049..8f3c8667c47 100644
--- a/spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js
+++ b/spec/frontend/packages_and_registries/package_registry/components/list/tokens/package_type_token_spec.js
@@ -24,13 +24,13 @@ describe('packages_filter', () => {
wrapper = null;
});
- it('it binds all of his attrs to filtered search token', () => {
+ it('binds all of his attrs to filtered search token', () => {
mountComponent({ attrs: { foo: 'bar' } });
expect(findFilteredSearchToken().attributes('foo')).toBe('bar');
});
- it('it binds all of his events to filtered search token', () => {
+ it('binds all of his events to filtered search token', () => {
const clickListener = jest.fn();
mountComponent({ listeners: { click: clickListener } });
diff --git a/spec/frontend/packages_and_registries/package_registry/pages/details_spec.js b/spec/frontend/packages_and_registries/package_registry/pages/details_spec.js
index 6078657daf4..83158d1cc5e 100644
--- a/spec/frontend/packages_and_registries/package_registry/pages/details_spec.js
+++ b/spec/frontend/packages_and_registries/package_registry/pages/details_spec.js
@@ -178,7 +178,7 @@ describe('PackagesApp', () => {
${PACKAGE_TYPE_PYPI} | ${true}
${PACKAGE_TYPE_NPM} | ${false}
`(
- `It is $visible that the component is visible when the package is $packageType`,
+ `is $visible that the component is visible when the package is $packageType`,
async ({ packageType, visible }) => {
createComponent({
resolver: jest.fn().mockResolvedValue(
diff --git a/spec/frontend/pipelines/graph/graph_component_wrapper_spec.js b/spec/frontend/pipelines/graph/graph_component_wrapper_spec.js
index a2097dda860..587a3c67168 100644
--- a/spec/frontend/pipelines/graph/graph_component_wrapper_spec.js
+++ b/spec/frontend/pipelines/graph/graph_component_wrapper_spec.js
@@ -554,7 +554,7 @@ describe('Pipeline graph wrapper', () => {
mock.restore();
});
- it('it calls reportPerformance with expected arguments', () => {
+ it('calls reportPerformance with expected arguments', () => {
expect(markAndMeasure).toHaveBeenCalled();
expect(reportPerformance).toHaveBeenCalled();
expect(reportPerformance).toHaveBeenCalledWith(metricsPath, metricsData);
diff --git a/spec/frontend/pipelines/graph/job_item_spec.js b/spec/frontend/pipelines/graph/job_item_spec.js
index 4f0da09fec6..05776ec0706 100644
--- a/spec/frontend/pipelines/graph/job_item_spec.js
+++ b/spec/frontend/pipelines/graph/job_item_spec.js
@@ -59,7 +59,7 @@ describe('pipeline graph job item', () => {
});
});
- it('it should render status and name', () => {
+ it('should render status and name', () => {
expect(wrapper.find('.ci-status-icon-success').exists()).toBe(true);
expect(wrapper.find('a').exists()).toBe(false);
@@ -72,7 +72,7 @@ describe('pipeline graph job item', () => {
});
describe('action icon', () => {
- it('it should render the action icon', () => {
+ it('should render the action icon', () => {
createWrapper({ job: mockJob });
const actionComponent = findActionComponent();
@@ -82,7 +82,7 @@ describe('pipeline graph job item', () => {
expect(actionComponent.attributes('disabled')).not.toBe('disabled');
});
- it('it should render disabled action icon when user cannot run the action', () => {
+ it('should render disabled action icon when user cannot run the action', () => {
createWrapper({ job: mockJobWithUnauthorizedAction });
const actionComponent = findActionComponent();
diff --git a/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js b/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
index 517b4f12559..8cde70ff8da 100644
--- a/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
+++ b/spec/frontend/sidebar/components/assignees/assignee_avatar_link_spec.js
@@ -143,7 +143,7 @@ describe('AssigneeAvatarLink component', () => {
issuableType | userId
${'merge_request'} | ${undefined}
${'issue'} | ${'1'}
- `('it sets data-user-id as $userId for $issuableType', ({ issuableType, userId }) => {
+ `('sets data-user-id as $userId for $issuableType', ({ issuableType, userId }) => {
createComponent({
issuableType,
});
diff --git a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js
index 330f5f6e036..cc894f94f80 100644
--- a/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js
+++ b/spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js
@@ -845,7 +845,7 @@ describe('MrWidgetOptions', () => {
${'closed'} | ${false} | ${'hides'}
${'merged'} | ${true} | ${'shows'}
${'open'} | ${true} | ${'shows'}
- `('it $showText merge error when state is $state', ({ state, show }) => {
+ `('$showText merge error when state is $state', ({ state, show }) => {
createComponent({ ...mockData, state, merge_error: 'Error!' });
expect(wrapper.find('[data-testid="merge_error"]').exists()).toBe(show);
diff --git a/spec/frontend/vue_shared/components/paginated_list_spec.js b/spec/frontend/vue_shared/components/paginated_list_spec.js
index 9f819cc4e94..ae9c920ebd2 100644
--- a/spec/frontend/vue_shared/components/paginated_list_spec.js
+++ b/spec/frontend/vue_shared/components/paginated_list_spec.js
@@ -49,7 +49,7 @@ describe('Pagination links component', () => {
});
describe('rendering', () => {
- it('it renders the gl-paginated-list', () => {
+ it('renders the gl-paginated-list', () => {
expect(wrapper.find('ul.list-group').exists()).toBe(true);
expect(wrapper.findAll('li.list-group-item').length).toBe(2);
});
diff --git a/spec/frontend/vue_shared/security_reports/components/manage_via_mr_spec.js b/spec/frontend/vue_shared/security_reports/components/manage_via_mr_spec.js
index 39909e26ef0..0a5e46d9263 100644
--- a/spec/frontend/vue_shared/security_reports/components/manage_via_mr_spec.js
+++ b/spec/frontend/vue_shared/security_reports/components/manage_via_mr_spec.js
@@ -93,7 +93,7 @@ describe('ManageViaMr component', () => {
createComponent({ apolloProvider, featureName, featureType, isFeatureConfigured: true });
});
- it('it does not render a button', () => {
+ it('does not render a button', () => {
expect(findButton().exists()).toBe(false);
});
});
@@ -104,7 +104,7 @@ describe('ManageViaMr component', () => {
createComponent({ apolloProvider, featureName, featureType, isFeatureConfigured: false });
});
- it('it does render a button', () => {
+ it('does render a button', () => {
expect(findButton().exists()).toBe(true);
});
diff --git a/spec/graphql/types/branch_protections/merge_access_level_type_spec.rb b/spec/graphql/types/branch_protections/merge_access_level_type_spec.rb
index 0c9c8553b6f..8cc1005d97e 100644
--- a/spec/graphql/types/branch_protections/merge_access_level_type_spec.rb
+++ b/spec/graphql/types/branch_protections/merge_access_level_type_spec.rb
@@ -9,5 +9,5 @@ RSpec.describe GitlabSchema.types['MergeAccessLevel'] do
specify { is_expected.to require_graphql_authorizations(:read_protected_branch) }
- specify { is_expected.to have_graphql_fields(fields) }
+ specify { is_expected.to have_graphql_fields(fields).at_least }
end
diff --git a/spec/graphql/types/branch_protection_type_spec.rb b/spec/graphql/types/branch_rules/branch_protection_type_spec.rb
index 40f6a852813..bbc92fd8fef 100644
--- a/spec/graphql/types/branch_protection_type_spec.rb
+++ b/spec/graphql/types/branch_rules/branch_protection_type_spec.rb
@@ -9,5 +9,5 @@ RSpec.describe GitlabSchema.types['BranchProtection'] do
specify { is_expected.to require_graphql_authorizations(:read_protected_branch) }
- specify { is_expected.to have_graphql_fields(fields) }
+ specify { is_expected.to have_graphql_fields(fields).at_least }
end
diff --git a/spec/lib/gitlab/git/commit_spec.rb b/spec/lib/gitlab/git/commit_spec.rb
index 95b49186d0f..d873151421d 100644
--- a/spec/lib/gitlab/git/commit_spec.rb
+++ b/spec/lib/gitlab/git/commit_spec.rb
@@ -2,8 +2,8 @@
require "spec_helper"
-RSpec.describe Gitlab::Git::Commit, :seed_helper do
- let(:repository) { Gitlab::Git::Repository.new('default', TEST_REPO_PATH, '', 'group/project') }
+RSpec.describe Gitlab::Git::Commit do
+ let(:repository) { create(:project, :repository).repository.raw }
let(:commit) { described_class.find(repository, SeedRepo::Commit::ID) }
describe "Commit info from gitaly commit" do
@@ -121,14 +121,6 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
it "returns nil for id containing NULL" do
expect(described_class.find(repository, "HE\x00AD")).to be_nil
end
-
- context 'with broken repo' do
- let(:repository) { Gitlab::Git::Repository.new('default', TEST_BROKEN_REPO_PATH, '', 'group/project') }
-
- it 'returns nil' do
- expect(described_class.find(repository, SeedRepo::Commit::ID)).to be_nil
- end
- end
end
describe '.find with Gitaly enabled' do
@@ -154,7 +146,7 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
describe '#id' do
subject { super().id }
- it { is_expected.to eq(SeedRepo::LastCommit::ID) }
+ it { is_expected.to eq(TestEnv::BRANCH_SHA['master']) }
end
end
@@ -223,7 +215,7 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
expect(subject.size).to eq(10)
end
- it { is_expected.to include(SeedRepo::EmptyCommit::ID) }
+ it { is_expected.to include(TestEnv::BRANCH_SHA['master']) }
end
context 'path is nil' do
@@ -242,28 +234,7 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
expect(subject.size).to eq(10)
end
- it { is_expected.to include(SeedRepo::EmptyCommit::ID) }
- end
-
- context 'ref is branch name' do
- subject do
- commits = described_class.where(
- repo: repository,
- ref: 'master',
- path: 'files',
- limit: 3,
- offset: 1
- )
-
- commits.map { |c| c.id }
- end
-
- it 'has 3 elements' do
- expect(subject.size).to eq(3)
- end
-
- it { is_expected.to include("d14d6c0abdd253381df51a723d58691b2ee1ab08") }
- it { is_expected.not_to include("eb49186cfa5c4338011f5f590fac11bd66c5c631") }
+ it { is_expected.to include(TestEnv::BRANCH_SHA['master']) }
end
context 'ref is commit id' do
@@ -323,13 +294,12 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
context 'requesting a commit range' do
let(:from) { 'v1.0.0' }
- let(:to) { 'v1.2.0' }
+ let(:to) { 'v1.1.0' }
let(:commits_in_range) do
%w[
570e7b2abdd848b95f2f578043fc23bd6f6fd24d
5937ac0a7beb003549fc5fd26fc247adbce4a52e
- eb49186cfa5c4338011f5f590fac11bd66c5c631
]
end
@@ -338,9 +308,9 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
end
context 'limited' do
- let(:limit) { 2 }
+ let(:limit) { 1 }
- it { expect(commit_ids).to eq(commits_in_range.last(2)) }
+ it { expect(commit_ids).to eq(commits_in_range.last(1)) }
end
end
end
@@ -383,16 +353,8 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
commits.map(&:id)
end
- it 'has 34 elements' do
- expect(subject.size).to eq(34)
- end
-
- it 'includes the expected commits' do
- expect(subject).to include(
- SeedRepo::Commit::ID,
- SeedRepo::Commit::PARENT_ID,
- SeedRepo::FirstCommit::ID
- )
+ it 'has maximum elements' do
+ expect(subject.size).to eq(50)
end
end
@@ -408,13 +370,13 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
commits.map(&:id)
end
- it 'has 24 elements' do
- expect(subject.size).to eq(24)
+ it 'has 36 elements' do
+ expect(subject.size).to eq(36)
end
it 'includes the expected commits' do
expect(subject).to include(SeedRepo::Commit::ID, SeedRepo::FirstCommit::ID)
- expect(subject).not_to include(SeedRepo::LastCommit::ID)
+ expect(subject).not_to include(TestEnv::BRANCH_SHA['master'])
end
end
end
@@ -650,8 +612,8 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
subject { commit.ref_names(repository) }
- it 'has 2 element' do
- expect(subject.size).to eq(2)
+ it 'has 3 elements' do
+ expect(subject.size).to eq(3)
end
it { is_expected.to include("master") }
@@ -681,6 +643,8 @@ RSpec.describe Gitlab::Git::Commit, :seed_helper do
end
it 'gets messages in one batch', :request_store do
+ repository # preload repository so that the project factory does not pollute request counts
+
expect { subject.map(&:itself) }.to change { Gitlab::GitalyClient.get_request_count }.by(1)
end
end
diff --git a/spec/requests/api/ci/runner/jobs_request_post_spec.rb b/spec/requests/api/ci/runner/jobs_request_post_spec.rb
index e5555eea487..b33b97f90d7 100644
--- a/spec/requests/api/ci/runner/jobs_request_post_spec.rb
+++ b/spec/requests/api/ci/runner/jobs_request_post_spec.rb
@@ -17,11 +17,12 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
end
describe '/api/v4/jobs' do
- let(:group) { create(:group, :nested) }
+ let_it_be(:group) { create(:group, :nested) }
+ let_it_be(:user) { create(:user) }
+
let(:project) { create(:project, namespace: group, shared_runners_enabled: false) }
- let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master') }
let(:runner) { create(:ci_runner, :project, projects: [project]) }
- let(:user) { create(:user) }
+ let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master') }
let(:job) do
create(:ci_build, :pending, :queued, :artifacts, :extended_options,
pipeline: pipeline, name: 'spinach', stage: 'test', stage_idx: 0)
@@ -354,6 +355,9 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
end
context 'when GIT_DEPTH is not specified and there is no default git depth for the project' do
+ let(:project) { create(:project, namespace: group, shared_runners_enabled: false) }
+ let(:runner) { create(:ci_runner, :project, projects: [project]) }
+
before do
project.update!(ci_default_git_depth: nil)
end
@@ -411,7 +415,8 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
context 'when job is made for merge request' do
let(:pipeline) { create(:ci_pipeline, source: :merge_request_event, project: project, ref: 'feature', merge_request: merge_request) }
let!(:job) { create(:ci_build, :pending, :queued, pipeline: pipeline, name: 'spinach', ref: 'feature', stage: 'test', stage_idx: 0) }
- let(:merge_request) { create(:merge_request) }
+
+ let_it_be(:merge_request) { create(:merge_request) }
it 'sets branch as ref_type' do
request_job
@@ -728,7 +733,9 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
describe 'timeout support' do
context 'when project specifies job timeout' do
- let(:project) { create(:project, shared_runners_enabled: false, build_timeout: 1234) }
+ let_it_be(:project) { create(:project, shared_runners_enabled: false, build_timeout: 1234) }
+
+ let(:runner) { create(:ci_runner, :project, projects: [project]) }
it 'contains info about timeout taken from project' do
request_job
@@ -926,8 +933,8 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
end
context 'when the runner is of group type' do
- let(:group) { create(:group) }
- let(:runner) { create(:ci_runner, :group, groups: [group]) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:runner) { create(:ci_runner, :group, groups: [group]) }
it_behaves_like 'storing arguments in the application context for the API' do
let(:expected_params) { { root_namespace: group.full_path_components.first, client_id: "runner/#{runner.id}" } }
diff --git a/spec/requests/api/debian_group_packages_spec.rb b/spec/requests/api/debian_group_packages_spec.rb
index 542ae05f996..9dbb75becf8 100644
--- a/spec/requests/api/debian_group_packages_spec.rb
+++ b/spec/requests/api/debian_group_packages_spec.rb
@@ -36,18 +36,36 @@ RSpec.describe API::DebianGroupPackages do
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete Packages file/
end
+ describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/binary-:architecture/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/#{component.name}/binary-#{architecture.name}/by-hash/SHA256/#{component_file_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/source/Sources' do
let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/#{component.name}/source/Sources" }
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete Sources file/
end
+ describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/source/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/#{component.name}/source/by-hash/SHA256/#{component_file_sources_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/Packages' do
let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/#{component.name}/debian-installer/binary-#{architecture.name}/Packages" }
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete D-I Packages file/
end
+ describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/#{component.name}/debian-installer/binary-#{architecture.name}/by-hash/SHA256/#{component_file_di_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET groups/:id/-/packages/debian/pool/:codename/:project_id/:letter/:package_name/:package_version/:file_name' do
using RSpec::Parameterized::TableSyntax
diff --git a/spec/requests/api/debian_project_packages_spec.rb b/spec/requests/api/debian_project_packages_spec.rb
index f0cd0b6d5ed..6bef669cb3a 100644
--- a/spec/requests/api/debian_project_packages_spec.rb
+++ b/spec/requests/api/debian_project_packages_spec.rb
@@ -36,18 +36,36 @@ RSpec.describe API::DebianProjectPackages do
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete Packages file/
end
+ describe 'GET projects/:id/packages/debian/dists/*distribution/:component/binary-:architecture/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/#{component.name}/binary-#{architecture.name}/by-hash/SHA256/#{component_file_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET projects/:id/packages/debian/dists/*distribution/source/Sources' do
let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/#{component.name}/source/Sources" }
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete Sources file/
end
+ describe 'GET projects/:id/packages/debian/dists/*distribution/source/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/#{component.name}/source/by-hash/SHA256/#{component_file_sources_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET projects/:id/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/Packages' do
let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/#{component.name}/debian-installer/binary-#{architecture.name}/Packages" }
it_behaves_like 'Debian packages read endpoint', 'GET', :success, /Description: This is an incomplete D-I Packages file/
end
+ describe 'GET projects/:id/packages/debian/dists/*distribution/:component/debian-installer/binary-:architecture/by-hash/SHA256/:file_sha256' do
+ let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/#{component.name}/debian-installer/binary-#{architecture.name}/by-hash/SHA256/#{component_file_di_older_sha256.file_sha256}" }
+
+ it_behaves_like 'Debian packages read endpoint', 'GET', :success, /^Other SHA256$/
+ end
+
describe 'GET projects/:id/packages/debian/pool/:codename/:letter/:package_name/:package_version/:file_name' do
using RSpec::Parameterized::TableSyntax
diff --git a/spec/requests/api/rpm_project_packages_spec.rb b/spec/requests/api/rpm_project_packages_spec.rb
index 80368ded830..6a646c26fd2 100644
--- a/spec/requests/api/rpm_project_packages_spec.rb
+++ b/spec/requests/api/rpm_project_packages_spec.rb
@@ -3,6 +3,9 @@ require 'spec_helper'
RSpec.describe API::RpmProjectPackages do
include HttpBasicAuthHelpers
+ include WorkhorseHelpers
+
+ include_context 'workhorse headers'
using RSpec::Parameterized::TableSyntax
@@ -141,8 +144,9 @@ RSpec.describe API::RpmProjectPackages do
describe 'POST /api/v4/projects/:project_id/packages/rpm' do
let(:url) { "/projects/#{project.id}/packages/rpm" }
+ let(:file_upload) { fixture_file_upload('spec/fixtures/packages/rpm/hello-0.0.1-1.fc29.x86_64.rpm') }
- subject { post api(url), headers: headers }
+ subject { post api(url), params: { file: file_upload }, headers: headers }
context 'with user token' do
context 'with valid project' do
@@ -179,6 +183,41 @@ RSpec.describe API::RpmProjectPackages do
it_behaves_like params[:shared_examples_name], params[:expected_status]
end
end
+
+ context 'when user can upload file' do
+ before do
+ project.add_developer(user)
+ end
+
+ let(:headers) { basic_auth_header(user.username, personal_access_token.token).merge(workhorse_headers) }
+
+ context 'when file size too large' do
+ before do
+ allow_next_instance_of(UploadedFile) do |uploaded_file|
+ allow(uploaded_file).to receive(:size).and_return(project.actual_limits.rpm_max_file_size + 1)
+ end
+ end
+
+ it 'returns an error' do
+ upload_file(params: { file: file_upload }, request_headers: headers)
+
+ expect(response).to have_gitlab_http_status(:bad_request)
+ expect(response.body).to match(/File is too large/)
+ end
+ end
+ end
+
+ def upload_file(params: {}, request_headers: headers)
+ url = "/projects/#{project.id}/packages/rpm"
+ workhorse_finalize(
+ api(url),
+ method: :post,
+ file_key: :file,
+ params: params,
+ headers: request_headers,
+ send_rewritten_field: true
+ )
+ end
end
it_behaves_like 'a deploy token for RPM requests'
diff --git a/spec/requests/verifies_with_email_spec.rb b/spec/requests/verifies_with_email_spec.rb
index 2f249952455..e8d3e94bd0e 100644
--- a/spec/requests/verifies_with_email_spec.rb
+++ b/spec/requests/verifies_with_email_spec.rb
@@ -18,7 +18,7 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
it 'sends an email' do
mail = find_email_for(user)
expect(mail.to).to match_array([user.email])
- expect(mail.subject).to eq('Verify your identity')
+ expect(mail.subject).to eq(s_('IdentityVerification|Verify your identity'))
end
end
@@ -50,7 +50,7 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
it 'adds a verification error message' do
expect(response.body)
.to include("You&#39;ve reached the maximum amount of tries. "\
- 'Wait 10 minutes or resend a new code and try again.')
+ 'Wait 10 minutes or send a new code and try again.')
end
end
@@ -62,7 +62,8 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
it_behaves_like 'prompt for email verification'
it 'adds a verification error message' do
- expect(response.body).to include(('The code is incorrect. Enter it again, or resend a new code.'))
+ expect(response.body)
+ .to include((s_('IdentityVerification|The code is incorrect. Enter it again, or send a new code.')))
end
end
@@ -75,7 +76,8 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
it_behaves_like 'prompt for email verification'
it 'adds a verification error message' do
- expect(response.body).to include(('The code has expired. Resend a new code and try again.'))
+ expect(response.body)
+ .to include((s_('IdentityVerification|The code has expired. Send a new code and try again.')))
end
end
@@ -112,7 +114,8 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
it 'redirects to the login form and shows an alert message' do
expect(response).to redirect_to(new_user_session_path)
- expect(flash[:alert]).to eq('Maximum login attempts exceeded. Wait 10 minutes and try again.')
+ expect(flash[:alert])
+ .to eq(s_('IdentityVerification|Maximum login attempts exceeded. Wait 10 minutes and try again.'))
end
end
@@ -217,6 +220,7 @@ RSpec.describe 'VerifiesWithEmail', :clean_gitlab_redis_sessions, :clean_gitlab_
describe 'successful_verification' do
before do
+ allow(user).to receive(:role_required?).and_return(true) # It skips the required signup info before_action
sign_in(user)
end
diff --git a/spec/services/packages/rpm/repository_metadata/base_builder_spec.rb b/spec/services/packages/rpm/repository_metadata/base_builder_spec.rb
new file mode 100644
index 00000000000..0fb58cc27d5
--- /dev/null
+++ b/spec/services/packages/rpm/repository_metadata/base_builder_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryMetadata::BaseBuilder do
+ describe '#execute' do
+ subject { described_class.new.execute }
+
+ before do
+ stub_const("#{described_class}::ROOT_TAG", 'test')
+ stub_const("#{described_class}::ROOT_ATTRIBUTES", { foo1: 'bar1', foo2: 'bar2' })
+ end
+
+ it 'generate valid xml' do
+ result = Nokogiri::XML::Document.parse(subject)
+
+ expect(result.children.count).to eq(1)
+ expect(result.children.first.attributes.count).to eq(2)
+ expect(result.children.first.attributes['foo1'].value).to eq('bar1')
+ expect(result.children.first.attributes['foo2'].value).to eq('bar2')
+ end
+ end
+end
diff --git a/spec/services/packages/rpm/repository_metadata/build_filelist_xml_spec.rb b/spec/services/packages/rpm/repository_metadata/build_filelist_xml_spec.rb
new file mode 100644
index 00000000000..2feb44c7c1b
--- /dev/null
+++ b/spec/services/packages/rpm/repository_metadata/build_filelist_xml_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryMetadata::BuildFilelistXml do
+ describe '#execute' do
+ subject { described_class.new.execute }
+
+ context "when generate empty xml" do
+ let(:expected_xml) do
+ <<~XML
+ <?xml version="1.0" encoding="UTF-8"?>
+ <filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0"/>
+ XML
+ end
+
+ it 'generate expected xml' do
+ expect(subject).to eq(expected_xml)
+ end
+ end
+ end
+end
diff --git a/spec/services/packages/rpm/repository_metadata/build_other_xml_spec.rb b/spec/services/packages/rpm/repository_metadata/build_other_xml_spec.rb
new file mode 100644
index 00000000000..823aa18808a
--- /dev/null
+++ b/spec/services/packages/rpm/repository_metadata/build_other_xml_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryMetadata::BuildOtherXml do
+ describe '#execute' do
+ subject { described_class.new.execute }
+
+ context "when generate empty xml" do
+ let(:expected_xml) do
+ <<~XML
+ <?xml version="1.0" encoding="UTF-8"?>
+ <otherdata xmlns="http://linux.duke.edu/metadata/other" packages="0"/>
+ XML
+ end
+
+ it 'generate expected xml' do
+ expect(subject).to eq(expected_xml)
+ end
+ end
+ end
+end
diff --git a/spec/services/packages/rpm/repository_metadata/build_primary_xml_spec.rb b/spec/services/packages/rpm/repository_metadata/build_primary_xml_spec.rb
new file mode 100644
index 00000000000..f5294d6f7f7
--- /dev/null
+++ b/spec/services/packages/rpm/repository_metadata/build_primary_xml_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryMetadata::BuildPrimaryXml do
+ describe '#execute' do
+ subject { described_class.new.execute }
+
+ context "when generate empty xml" do
+ let(:expected_xml) do
+ <<~XML
+ <?xml version="1.0" encoding="UTF-8"?>
+ <metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="0"/>
+ XML
+ end
+
+ it 'generate expected xml' do
+ expect(subject).to eq(expected_xml)
+ end
+ end
+ end
+end
diff --git a/spec/services/packages/rpm/repository_metadata/build_repomd_xml_spec.rb b/spec/services/packages/rpm/repository_metadata/build_repomd_xml_spec.rb
new file mode 100644
index 00000000000..29b0f73e3c1
--- /dev/null
+++ b/spec/services/packages/rpm/repository_metadata/build_repomd_xml_spec.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+require 'spec_helper'
+
+RSpec.describe Packages::Rpm::RepositoryMetadata::BuildRepomdXml do
+ describe '#execute' do
+ subject { described_class.new(data).execute }
+
+ let(:data) do
+ {
+ filelists: {
+ checksum: { type: "sha256", value: "123" },
+ 'open-checksum': { type: "sha256", value: "123" },
+ location: { href: "repodata/123-filelists.xml.gz" },
+ timestamp: { value: 1644602784 },
+ size: { value: 11111 },
+ 'open-size': { value: 11111 }
+ },
+ primary: {
+ checksum: { type: "sha256", value: "234" },
+ 'open-checksum': { type: "sha256", value: "234" },
+ location: { href: "repodata/234-primary.xml.gz" },
+ timestamp: { value: 1644602784 },
+ size: { value: 22222 },
+ 'open-size': { value: 22222 }
+ },
+ other: {
+ checksum: { type: "sha256", value: "345" },
+ 'open-checksum': { type: "sha256", value: "345" },
+ location: { href: "repodata/345-other.xml.gz" },
+ timestamp: { value: 1644602784 },
+ size: { value: 33333 },
+ 'open-size': { value: 33333 }
+ }
+ }
+ end
+
+ let(:creation_timestamp) { 111111 }
+
+ before do
+ allow(Time).to receive(:now).and_return(creation_timestamp)
+ end
+
+ it 'generate valid xml' do
+ # Have one root attribute
+ result = Nokogiri::XML::Document.parse(subject)
+ expect(result.children.count).to eq(1)
+
+ # Root attribute name is 'repomd'
+ root = result.children.first
+ expect(root.name).to eq('repomd')
+
+ # Have the same count of 'data' tags as count of keys in 'data'
+ expect(result.css('data').count).to eq(data.count)
+ end
+
+ it 'has all data info' do
+ result = Nokogiri::XML::Document.parse(subject).remove_namespaces!
+
+ data.each do |tag_name, tag_attributes|
+ tag_attributes.each_key do |key|
+ expect(result.at("//repomd/data[@type=\"#{tag_name}\"]/#{key}")).not_to be_nil
+ end
+ end
+ end
+ end
+end
diff --git a/spec/services/users/email_verification/validate_token_service_spec.rb b/spec/services/users/email_verification/validate_token_service_spec.rb
index 279f73d6382..44af4a4d36f 100644
--- a/spec/services/users/email_verification/validate_token_service_spec.rb
+++ b/spec/services/users/email_verification/validate_token_service_spec.rb
@@ -25,7 +25,8 @@ RSpec.describe Users::EmailVerification::ValidateTokenService, :clean_gitlab_red
context 'when rate limited' do
before do
- allow(Gitlab::ApplicationRateLimiter).to receive(:throttled?).and_return(true)
+ allow(Gitlab::ApplicationRateLimiter).to receive(:throttled?)
+ .with(:email_verification, scope: encrypted_token).and_return(true)
end
it 'returns a failure status' do
@@ -33,8 +34,8 @@ RSpec.describe Users::EmailVerification::ValidateTokenService, :clean_gitlab_red
{
status: :failure,
reason: :rate_limited,
- message: "You've reached the maximum amount of tries. "\
- 'Wait 10 minutes or resend a new code and try again.'
+ message: format(s_("IdentityVerification|You've reached the maximum amount of tries. "\
+ 'Wait %{interval} or send a new code and try again.'), interval: '10 minutes')
}
)
end
@@ -48,7 +49,7 @@ RSpec.describe Users::EmailVerification::ValidateTokenService, :clean_gitlab_red
{
status: :failure,
reason: :expired,
- message: 'The code has expired. Resend a new code and try again.'
+ message: s_('IdentityVerification|The code has expired. Send a new code and try again.')
}
)
end
@@ -62,7 +63,22 @@ RSpec.describe Users::EmailVerification::ValidateTokenService, :clean_gitlab_red
{
status: :failure,
reason: :invalid,
- message: 'The code is incorrect. Enter it again, or resend a new code.'
+ message: s_('IdentityVerification|The code is incorrect. Enter it again, or send a new code.')
+ }
+ )
+ end
+ end
+
+ context 'when encrypted token was not set and a blank token is provided' do
+ let(:encrypted_token) { nil }
+ let(:token) { '' }
+
+ it 'returns a failure status' do
+ expect(service.execute).to eq(
+ {
+ status: :failure,
+ reason: :invalid,
+ message: s_('IdentityVerification|The code is incorrect. Enter it again, or send a new code.')
}
)
end
diff --git a/spec/support/helpers/usage_data_helpers.rb b/spec/support/helpers/usage_data_helpers.rb
index d8c9c5b7556..1aea3545ae0 100644
--- a/spec/support/helpers/usage_data_helpers.rb
+++ b/spec/support/helpers/usage_data_helpers.rb
@@ -6,7 +6,6 @@ module UsageDataHelpers
snippet_update
snippet_comment
merge_request_comment
- merge_request_create
commit_comment
wiki_pages_create
wiki_pages_update
@@ -15,9 +14,6 @@ module UsageDataHelpers
cycle_analytics_views
productivity_analytics_views
source_code_pushes
- design_management_designs_create
- design_management_designs_update
- design_management_designs_delete
).freeze
COUNTS_KEYS = %i(
@@ -122,7 +118,6 @@ module UsageDataHelpers
uploads
web_hooks
user_preferences_user_gitpod_enabled
- service_usage_data_download_payload_click
).push(*SMAU_KEYS)
USAGE_DATA_KEYS = %i(
diff --git a/spec/support/seed.rb b/spec/support/seed.rb
deleted file mode 100644
index 36cb819763b..00000000000
--- a/spec/support/seed.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-RSpec.configure do |config|
- config.include SeedHelper, :seed_helper
-
- config.before(:all, :seed_helper) do
- ensure_seeds
- end
-end
diff --git a/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb b/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb
index e65e51eacc2..cf090c7a185 100644
--- a/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb
+++ b/spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb
@@ -18,8 +18,11 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_
let_it_be(:private_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'all') }
let_it_be(:private_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'existing-arch') }
let_it_be(:private_component_file) { create("debian_#{container_type}_component_file", component: private_component, architecture: private_architecture) }
- let_it_be(:private_component_sources) { create("debian_#{container_type}_component_file", :sources, component: private_component) }
+ let_it_be(:private_component_file_sources) { create("debian_#{container_type}_component_file", :sources, component: private_component) }
let_it_be(:private_component_file_di) { create("debian_#{container_type}_component_file", :di_packages, component: private_component, architecture: private_architecture) }
+ let_it_be(:private_component_file_older_sha256) { create("debian_#{container_type}_component_file", :older_sha256, component: private_component, architecture: private_architecture) }
+ let_it_be(:private_component_file_sources_older_sha256) { create("debian_#{container_type}_component_file", :sources, :older_sha256, component: private_component) }
+ let_it_be(:private_component_file_di_older_sha256) { create("debian_#{container_type}_component_file", :di_packages, :older_sha256, component: private_component, architecture: private_architecture) }
let_it_be(:public_distribution, freeze: true) { create("debian_#{container_type}_distribution", :with_file, container: public_container, codename: 'existing-codename') }
let_it_be(:public_distribution_key, freeze: true) { create("debian_#{container_type}_distribution_key", distribution: public_distribution) }
@@ -29,6 +32,9 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_
let_it_be(:public_component_file) { create("debian_#{container_type}_component_file", component: public_component, architecture: public_architecture) }
let_it_be(:public_component_file_sources) { create("debian_#{container_type}_component_file", :sources, component: public_component) }
let_it_be(:public_component_file_di) { create("debian_#{container_type}_component_file", :di_packages, component: public_component, architecture: public_architecture) }
+ let_it_be(:public_component_file_older_sha256) { create("debian_#{container_type}_component_file", :older_sha256, component: public_component, architecture: public_architecture) }
+ let_it_be(:public_component_file_sources_older_sha256) { create("debian_#{container_type}_component_file", :sources, :older_sha256, component: public_component) }
+ let_it_be(:public_component_file_di_older_sha256) { create("debian_#{container_type}_component_file", :di_packages, :older_sha256, component: public_component, architecture: public_architecture) }
if container_type == :group
let_it_be(:private_project) { create(:project, :private, group: private_container) }
@@ -52,6 +58,9 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_
let(:distribution) { { private: private_distribution, public: public_distribution }[visibility_level] }
let(:architecture) { { private: private_architecture, public: public_architecture }[visibility_level] }
let(:component) { { private: private_component, public: public_component }[visibility_level] }
+ let(:component_file_older_sha256) { { private: private_component_file_older_sha256, public: public_component_file_older_sha256 }[visibility_level] }
+ let(:component_file_sources_older_sha256) { { private: private_component_file_sources_older_sha256, public: public_component_file_sources_older_sha256 }[visibility_level] }
+ let(:component_file_di_older_sha256) { { private: private_component_file_di_older_sha256, public: public_component_file_di_older_sha256 }[visibility_level] }
let(:package) { { private: private_package, public: public_package }[visibility_level] }
let(:letter) { package.name[0..2] == 'lib' ? package.name[0..3] : package.name[0] }
diff --git a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
index 7fd20fc3909..ea79dc674a1 100644
--- a/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
+++ b/spec/support/shared_examples/services/packages/debian/generate_distribution_shared_examples.rb
@@ -190,6 +190,7 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
Codename: unstable
Date: Sat, 25 Jan 2020 15:17:18 +0000
Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000
+ Acquire-By-Hash: yes
Architectures: all amd64 arm64
Components: contrib main
MD5Sum:
@@ -249,6 +250,7 @@ RSpec.shared_examples 'Generate Debian Distribution and component files' do
Codename: unstable
Date: Sat, 25 Jan 2020 15:17:18 +0000
Valid-Until: Mon, 27 Jan 2020 15:17:18 +0000
+ Acquire-By-Hash: yes
MD5Sum:
SHA256:
EOF