summaryrefslogtreecommitdiff
path: root/spec/controllers
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-10-01 12:33:51 +0200
committerDouwe Maan <douwe@gitlab.com>2015-10-01 12:33:51 +0200
commit7c7b664c01a87817ce3f35fb6bdab2498cff4f5d (patch)
tree19f001c79fb1ac98625b477152372b8b1ec49783 /spec/controllers
parent333463ddf280180d1878186160eb5a5e9c5c6e3e (diff)
parent1ca119930fc5f6125ca4d5db4e1a658d5df9dfcd (diff)
downloadgitlab-ce-7c7b664c01a87817ce3f35fb6bdab2498cff4f5d.tar.gz
Merge branch 'master' into flevour/gitlab-ce-project-path-insensitive-lookup
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/admin/users_controller_spec.rb15
-rw-r--r--spec/controllers/ci/commits_controller_spec.rb12
-rw-r--r--spec/controllers/ci/projects_controller_spec.rb93
-rw-r--r--spec/controllers/profiles/two_factor_auths_controller_spec.rb4
-rw-r--r--spec/controllers/projects/compare_controller_spec.rb26
-rw-r--r--spec/controllers/projects/milestones_controller_spec.rb6
-rw-r--r--spec/controllers/root_controller_spec.rb24
7 files changed, 76 insertions, 104 deletions
diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index c40b2c2a583..7168db117d6 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -7,6 +7,21 @@ describe Admin::UsersController do
sign_in(admin)
end
+ describe 'POST login_as' do
+ let(:user) { create(:user) }
+
+ it 'logs admin as another user' do
+ expect(warden.authenticate(scope: :user)).not_to eq(user)
+ post :login_as, id: user.username
+ expect(warden.authenticate(scope: :user)).to eq(user)
+ end
+
+ it 'redirects user to homepage' do
+ post :login_as, id: user.username
+ expect(response).to redirect_to(root_path)
+ end
+ end
+
describe 'DELETE #user with projects' do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
diff --git a/spec/controllers/ci/commits_controller_spec.rb b/spec/controllers/ci/commits_controller_spec.rb
index b71e7505731..cc39ce7687c 100644
--- a/spec/controllers/ci/commits_controller_spec.rb
+++ b/spec/controllers/ci/commits_controller_spec.rb
@@ -1,14 +1,10 @@
require "spec_helper"
describe Ci::CommitsController do
- before do
- @project = FactoryGirl.create :ci_project
- end
-
describe "GET /status" do
it "returns status of commit" do
- commit = FactoryGirl.create :ci_commit, project: @project
- get :status, id: commit.sha, ref_id: commit.ref, project_id: @project.id
+ commit = FactoryGirl.create :ci_commit
+ get :status, id: commit.sha, ref_id: commit.ref, project_id: commit.project.id
expect(response).to be_success
expect(response.code).to eq('200')
@@ -16,8 +12,8 @@ describe Ci::CommitsController do
end
it "returns not_found status" do
- commit = FactoryGirl.create :ci_commit, project: @project
- get :status, id: commit.sha, ref_id: "deploy", project_id: @project.id
+ commit = FactoryGirl.create :ci_commit
+ get :status, id: commit.sha, ref_id: "deploy", project_id: commit.project.id
expect(response).to be_success
expect(response.code).to eq('200')
diff --git a/spec/controllers/ci/projects_controller_spec.rb b/spec/controllers/ci/projects_controller_spec.rb
deleted file mode 100644
index c7a3cd50c20..00000000000
--- a/spec/controllers/ci/projects_controller_spec.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require "spec_helper"
-
-describe Ci::ProjectsController do
- before do
- @project = FactoryGirl.create :ci_project
- end
-
- describe "POST #build" do
- it 'should respond 200 if params is ok' do
- post :build, {
- id: @project.id,
- ref: 'master',
- before: '2aa371379db71ac89ae20843fcff3b3477cf1a1d',
- after: '1c8a9df454ef68c22c2a33cca8232bb50849e5c5',
- token: @project.token,
- ci_yaml_file: gitlab_ci_yaml,
- commits: [ { message: "Message" } ]
- }
-
- expect(response).to be_success
- expect(response.code).to eq('201')
- end
-
- it 'should respond 400 if push about removed branch' do
- post :build, {
- id: @project.id,
- ref: 'master',
- before: '2aa371379db71ac89ae20843fcff3b3477cf1a1d',
- after: '0000000000000000000000000000000000000000',
- token: @project.token,
- ci_yaml_file: gitlab_ci_yaml
- }
-
- expect(response).not_to be_success
- expect(response.code).to eq('400')
- end
-
- it 'should respond 400 if some params missed' do
- post :build, id: @project.id, token: @project.token, ci_yaml_file: gitlab_ci_yaml
- expect(response).not_to be_success
- expect(response.code).to eq('400')
- end
-
- it 'should respond 403 if token is wrong' do
- post :build, id: @project.id, token: 'invalid-token'
- expect(response).not_to be_success
- expect(response.code).to eq('403')
- end
- end
-
- describe "POST /projects" do
- let(:project_dump) { OpenStruct.new({ id: @project.gitlab_id }) }
-
- let(:user) do
- create(:user)
- end
-
- before do
- sign_in(user)
- end
-
- it "creates project" do
- post :create, { project: JSON.dump(project_dump.to_h) }.with_indifferent_access
-
- expect(response.code).to eq('302')
- expect(assigns(:project)).not_to be_a_new(Ci::Project)
- end
-
- it "shows error" do
- post :create, { project: JSON.dump(project_dump.to_h) }.with_indifferent_access
-
- expect(response.code).to eq('302')
- expect(flash[:alert]).to include("You have to have at least master role to enable CI for this project")
- end
- end
-
- describe "GET /gitlab" do
- let(:user) do
- create(:user)
- end
-
- before do
- sign_in(user)
- end
-
- it "searches projects" do
- xhr :get, :index, { search: "str", format: "json" }.with_indifferent_access
-
- expect(response).to be_success
- expect(response.code).to eq('200')
- end
- end
-end
diff --git a/spec/controllers/profiles/two_factor_auths_controller_spec.rb b/spec/controllers/profiles/two_factor_auths_controller_spec.rb
index f54706e3aa3..4fb1473c2d2 100644
--- a/spec/controllers/profiles/two_factor_auths_controller_spec.rb
+++ b/spec/controllers/profiles/two_factor_auths_controller_spec.rb
@@ -37,7 +37,7 @@ describe Profiles::TwoFactorAuthsController do
context 'with valid pin' do
before do
- expect(user).to receive(:valid_otp?).with(pin).and_return(true)
+ expect(user).to receive(:validate_and_consume_otp!).with(pin).and_return(true)
end
it 'sets two_factor_enabled' do
@@ -63,7 +63,7 @@ describe Profiles::TwoFactorAuthsController do
context 'with invalid pin' do
before do
- expect(user).to receive(:valid_otp?).with(pin).and_return(false)
+ expect(user).to receive(:validate_and_consume_otp!).with(pin).and_return(false)
end
it 'assigns error' do
diff --git a/spec/controllers/projects/compare_controller_spec.rb b/spec/controllers/projects/compare_controller_spec.rb
index b643b354073..2a447248b70 100644
--- a/spec/controllers/projects/compare_controller_spec.rb
+++ b/spec/controllers/projects/compare_controller_spec.rb
@@ -22,4 +22,30 @@ describe Projects::CompareController do
expect(assigns(:diffs).length).to be >= 1
expect(assigns(:commits).length).to be >= 1
end
+
+ describe 'non-existent refs' do
+ it 'invalid source ref' do
+ get(:show,
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ from: 'non-existent',
+ to: ref_to)
+
+ expect(response).to be_success
+ expect(assigns(:diffs)).to eq([])
+ expect(assigns(:commits)).to eq([])
+ end
+
+ it 'invalid target ref' do
+ get(:show,
+ namespace_id: project.namespace.to_param,
+ project_id: project.to_param,
+ from: ref_from,
+ to: 'non-existent')
+
+ expect(response).to be_success
+ expect(assigns(:diffs)).to eq(nil)
+ expect(assigns(:commits)).to eq(nil)
+ end
+ end
end
diff --git a/spec/controllers/projects/milestones_controller_spec.rb b/spec/controllers/projects/milestones_controller_spec.rb
index 35446640929..8127efabe6e 100644
--- a/spec/controllers/projects/milestones_controller_spec.rb
+++ b/spec/controllers/projects/milestones_controller_spec.rb
@@ -5,6 +5,7 @@ describe Projects::MilestonesController do
let(:user) { create(:user) }
let(:milestone) { create(:milestone, project: project) }
let(:issue) { create(:issue, project: project, milestone: milestone) }
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project, milestone: milestone) }
before do
sign_in(user)
@@ -14,6 +15,7 @@ describe Projects::MilestonesController do
describe "#destroy" do
it "should remove milestone" do
+ merge_request.reload
expect(issue.milestone_id).to eq(milestone.id)
delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.id, format: :js
@@ -24,6 +26,10 @@ describe Projects::MilestonesController do
expect { Milestone.find(milestone.id) }.to raise_exception(ActiveRecord::RecordNotFound)
issue.reload
expect(issue.milestone_id).to eq(nil)
+
+ merge_request.reload
+ expect(merge_request.milestone_id).to eq(nil)
+
# Check system note left for milestone removal
last_note = project.issues.find(issue.id).notes[-1].note
expect(last_note).to eq('Milestone removed')
diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb
index 64dfe8f34e3..5a104ae7c99 100644
--- a/spec/controllers/root_controller_spec.rb
+++ b/spec/controllers/root_controller_spec.rb
@@ -10,7 +10,7 @@ describe RootController do
allow(subject).to receive(:current_user).and_return(user)
end
- context 'who has customized their dashboard setting' do
+ context 'who has customized their dashboard setting for starred projects' do
before do
user.update_attribute(:dashboard, 'stars')
end
@@ -21,6 +21,28 @@ describe RootController do
end
end
+ context 'who has customized their dashboard setting for project activities' do
+ before do
+ user.update_attribute(:dashboard, 'project_activity')
+ end
+
+ it 'redirects to the activity list' do
+ get :index
+ expect(response).to redirect_to activity_dashboard_path
+ end
+ end
+
+ context 'who has customized their dashboard setting for starred project activities' do
+ before do
+ user.update_attribute(:dashboard, 'starred_project_activity')
+ end
+
+ it 'redirects to the activity list' do
+ get :index
+ expect(response).to redirect_to activity_dashboard_path(filter: 'starred')
+ end
+ end
+
context 'who uses the default dashboard setting' do
it 'renders the default dashboard' do
get :index