diff options
Diffstat (limited to 'spec/controllers/projects_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects_controller_spec.rb | 55 |
1 files changed, 48 insertions, 7 deletions
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 6c00dad8bb7..8aae9ef85be 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -2,7 +2,7 @@ require('spec_helper') -describe ProjectsController do +RSpec.describe ProjectsController do include ExternalAuthorizationServiceHelpers include ProjectForksHelper @@ -41,6 +41,27 @@ describe ProjectsController do end end end + + context 'with the new_create_project_ui experiment enabled and the user is part of the control group' do + before do + stub_experiment(new_create_project_ui: true) + stub_experiment_for_user(new_create_project_ui: false) + allow_any_instance_of(described_class).to receive(:experimentation_subject_id).and_return('uuid') + end + + it 'passes the right tracking parameters to the frontend' do + get(:new) + + expect(Gon.tracking_data).to eq( + { + category: 'Manage::Import::Experiment::NewCreateProjectUi', + action: 'click_tab', + label: 'uuid', + property: 'control_group' + } + ) + end + end end end @@ -359,6 +380,15 @@ describe ProjectsController do end end end + + context 'namespace storage limit' do + let_it_be(:project) { create(:project, :public, :repository ) } + let(:namespace) { project.namespace } + + subject { get :show, params: { namespace_id: namespace, id: project } } + + it_behaves_like 'namespace storage limit alert' + end end describe 'GET edit' do @@ -1160,16 +1190,16 @@ describe ProjectsController do shared_examples 'rate limits project export endpoint' do before do - allow(::Gitlab::ApplicationRateLimiter) - .to receive(:throttled?) - .and_return(true) + allow(Gitlab::ApplicationRateLimiter) + .to receive(:increment) + .and_return(Gitlab::ApplicationRateLimiter.rate_limits["project_#{action}".to_sym][:threshold] + 1) end it 'prevents requesting project export' do post action, params: { namespace_id: project.namespace, id: project } - expect(flash[:alert]).to eq('This endpoint has been requested too many times. Try again later.') - expect(response).to have_gitlab_http_status(:found) + expect(response.body).to eq('This endpoint has been requested too many times. Try again later.') + expect(response).to have_gitlab_http_status(:too_many_requests) end end @@ -1226,7 +1256,18 @@ describe ProjectsController do end context 'when the endpoint receives requests above the limit', :clean_gitlab_redis_cache do - include_examples 'rate limits project export endpoint' + before do + allow(Gitlab::ApplicationRateLimiter) + .to receive(:increment) + .and_return(Gitlab::ApplicationRateLimiter.rate_limits[:project_download_export][:threshold] + 1) + end + + it 'prevents requesting project export' do + post action, params: { namespace_id: project.namespace, id: project } + + expect(response.body).to eq('This endpoint has been requested too many times. Try again later.') + expect(response).to have_gitlab_http_status(:too_many_requests) + end end end end |