diff options
Diffstat (limited to 'spec/features/snippets')
-rw-r--r-- | spec/features/snippets/search_snippets_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/snippets/spam_snippets_spec.rb | 76 | ||||
-rw-r--r-- | spec/features/snippets/user_creates_snippet_spec.rb | 19 | ||||
-rw-r--r-- | spec/features/snippets/user_edits_snippet_spec.rb | 20 |
4 files changed, 61 insertions, 56 deletions
diff --git a/spec/features/snippets/search_snippets_spec.rb b/spec/features/snippets/search_snippets_spec.rb index 691716d3576..d3e02d43813 100644 --- a/spec/features/snippets/search_snippets_spec.rb +++ b/spec/features/snippets/search_snippets_spec.rb @@ -11,7 +11,7 @@ describe 'Search Snippets' do visit dashboard_snippets_path submit_search('Middle') - select_search_scope('Titles and Filenames') + select_search_scope('Titles and Descriptions') expect(page).to have_link(public_snippet.title) expect(page).to have_link(private_snippet.title) diff --git a/spec/features/snippets/spam_snippets_spec.rb b/spec/features/snippets/spam_snippets_spec.rb index 69e3f190725..d7b181dc678 100644 --- a/spec/features/snippets/spam_snippets_spec.rb +++ b/spec/features/snippets/spam_snippets_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' shared_examples_for 'snippet editor' do + include_context 'includes Spam constants' + def description_field find('.js-description-input').find('input,textarea') end @@ -11,7 +13,6 @@ shared_examples_for 'snippet editor' do stub_feature_flags(allow_possible_spam: false) stub_feature_flags(snippets_vue: false) stub_feature_flags(snippets_edit_vue: false) - stub_feature_flags(monaco_snippets: flag) stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false') Gitlab::CurrentSettings.update!( @@ -33,18 +34,18 @@ shared_examples_for 'snippet editor' do find('#personal_snippet_visibility_level_20').set(true) page.within('.file-editor') do - el = flag == true ? find('.inputarea') : find('.ace_text-input', visible: false) + el = find('.inputarea') el.send_keys 'Hello World!' end end - shared_examples 'solve recaptcha' do - it 'creates a snippet after solving reCaptcha' do + shared_examples 'solve reCAPTCHA' do + it 'creates a snippet after solving reCAPTCHA' do click_button('Create snippet') wait_for_requests - # it is impossible to test recaptcha automatically and there is no possibility to fill in recaptcha - # recaptcha verification is skipped in test environment and it always returns true + # it is impossible to test reCAPTCHA automatically and there is no possibility to fill in recaptcha + # reCAPTCHA verification is skipped in test environment and it always returns true expect(page).not_to have_content('My Snippet Title') expect(page).to have_css('.recaptcha') click_button('Submit personal snippet') @@ -53,23 +54,62 @@ shared_examples_for 'snippet editor' do end end - context 'when identified as spam' do + shared_examples 'does not allow creation' do + it 'rejects creation of the snippet' do + click_button('Create snippet') + wait_for_requests + + expect(page).to have_content('discarded') + expect(page).not_to have_content('My Snippet Title') + expect(page).not_to have_css('.recaptcha') + end + end + + context 'when SpamVerdictService requires recaptcha' do + before do + expect_next_instance_of(Spam::SpamVerdictService) do |verdict_service| + expect(verdict_service).to receive(:execute).and_return(REQUIRE_RECAPTCHA) + end + end + + context 'when allow_possible_spam feature flag is false' do + before do + stub_application_setting(recaptcha_enabled: false) + end + + it_behaves_like 'does not allow creation' + end + + context 'when allow_possible_spam feature flag is true' do + it_behaves_like 'solve reCAPTCHA' + end + end + + context 'when SpamVerdictService disallows' do before do - WebMock.stub_request(:any, /.*akismet.com.*/).to_return(body: "true", status: 200) + expect_next_instance_of(Spam::SpamVerdictService) do |verdict_service| + expect(verdict_service).to receive(:execute).and_return(DISALLOW) + end end context 'when allow_possible_spam feature flag is false' do - it_behaves_like 'solve recaptcha' + before do + stub_application_setting(recaptcha_enabled: false) + end + + it_behaves_like 'does not allow creation' end context 'when allow_possible_spam feature flag is true' do - it_behaves_like 'solve recaptcha' + it_behaves_like 'does not allow creation' end end - context 'when not identified as spam' do + context 'when SpamVerdictService allows' do before do - WebMock.stub_request(:any, /.*akismet.com.*/).to_return(body: "false", status: 200) + expect_next_instance_of(Spam::SpamVerdictService) do |verdict_service| + expect(verdict_service).to receive(:execute).and_return(ALLOW) + end end it 'creates a snippet' do @@ -85,15 +125,5 @@ end describe 'User creates snippet', :js do let_it_be(:user) { create(:user) } - context 'when using Monaco' do - it_behaves_like "snippet editor" do - let(:flag) { true } - end - end - - context 'when using ACE' do - it_behaves_like "snippet editor" do - let(:flag) { false } - end - end + it_behaves_like "snippet editor" end diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb index 5d3a84dd7bc..62054c1f491 100644 --- a/spec/features/snippets/user_creates_snippet_spec.rb +++ b/spec/features/snippets/user_creates_snippet_spec.rb @@ -6,7 +6,6 @@ shared_examples_for 'snippet editor' do before do stub_feature_flags(snippets_vue: false) stub_feature_flags(snippets_edit_vue: false) - stub_feature_flags(monaco_snippets: flag) sign_in(user) visit new_snippet_path end @@ -23,7 +22,7 @@ shared_examples_for 'snippet editor' do fill_in 'personal_snippet_description', with: 'My Snippet **Description**' page.within('.file-editor') do - el = flag == true ? find('.inputarea') : find('.ace_text-input', visible: false) + el = find('.inputarea') el.send_keys 'Hello World!' end end @@ -80,7 +79,7 @@ shared_examples_for 'snippet editor' do end context 'when the git operation fails' do - let(:error) { 'This is a git error' } + let(:error) { 'Error creating the snippet' } before do allow_next_instance_of(Snippets::CreateService) do |instance| @@ -136,7 +135,7 @@ shared_examples_for 'snippet editor' do fill_in 'personal_snippet_title', with: 'My Snippet Title' page.within('.file-editor') do find(:xpath, "//input[@id='personal_snippet_file_name']").set 'snippet+file+name' - el = flag == true ? find('.inputarea') : find('.ace_text-input', visible: false) + el = find('.inputarea') el.send_keys 'Hello World!' end @@ -154,15 +153,5 @@ describe 'User creates snippet', :js do let_it_be(:user) { create(:user) } - context 'when using Monaco' do - it_behaves_like "snippet editor" do - let(:flag) { true } - end - end - - context 'when using ACE' do - it_behaves_like "snippet editor" do - let(:flag) { false } - end - end + it_behaves_like "snippet editor" end diff --git a/spec/features/snippets/user_edits_snippet_spec.rb b/spec/features/snippets/user_edits_snippet_spec.rb index b4f8fbfa47e..40b0113cf39 100644 --- a/spec/features/snippets/user_edits_snippet_spec.rb +++ b/spec/features/snippets/user_edits_snippet_spec.rb @@ -10,12 +10,9 @@ describe 'User edits snippet', :js do let_it_be(:user) { create(:user) } let_it_be(:snippet, reload: true) { create(:personal_snippet, :repository, :public, file_name: file_name, content: content, author: user) } - let(:version_snippet_enabled) { true } - before do stub_feature_flags(snippets_vue: false) stub_feature_flags(snippets_edit_vue: false) - stub_feature_flags(version_snippets: version_snippet_enabled) sign_in(user) @@ -33,18 +30,6 @@ describe 'User edits snippet', :js do end end - context 'when feature flag :version_snippets is disabled' do - let(:version_snippet_enabled) { false } - - it 'displays the snippet file_name and content' do - aggregate_failures do - expect(page.find_field('personal_snippet_file_name').value).to eq file_name - expect(page.find('.file-content')).to have_content(content) - expect(page.find('.snippet-file-content', visible: false).value).to eq content - end - end - end - it 'updates the snippet' do fill_in 'personal_snippet_title', with: 'New Snippet Title' @@ -88,16 +73,17 @@ describe 'User edits snippet', :js do context 'when the git operation fails' do before do allow_next_instance_of(Snippets::UpdateService) do |instance| - allow(instance).to receive(:create_commit).and_raise(StandardError) + allow(instance).to receive(:create_commit).and_raise(StandardError, 'Error Message') end fill_in 'personal_snippet_title', with: 'New Snippet Title' + fill_in 'personal_snippet_file_name', with: 'new_file_name' click_button('Save changes') end it 'renders edit page and displays the error' do - expect(page.find('.flash-container span').text).to eq('Error updating the snippet') + expect(page.find('.flash-container span').text).to eq('Error updating the snippet - Error Message') expect(page).to have_content('Edit Snippet') end end |