Commit 311f4076 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Fix commit status tests

parent 08064767
...@@ -2,18 +2,17 @@ require 'spec_helper' ...@@ -2,18 +2,17 @@ require 'spec_helper'
describe API::CommitStatus, api: true do describe API::CommitStatus, api: true do
include ApiHelpers include ApiHelpers
let(:user) { create(:user) } let!(:project) { create(:project) }
let(:user2) { create(:user) }
let!(:project) { create(:project, creator_id: user.id) }
let!(:reporter) { create(:project_member, user: user, project: project, access_level: ProjectMember::REPORTER) }
let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
let(:commit) { project.repository.commit } let(:commit) { project.repository.commit }
let!(:ci_commit) { project.ensure_ci_commit(commit.id) } let!(:ci_commit) { project.ensure_ci_commit(commit.id) }
let(:commit_status) { create(:commit_status, commit: ci_commit) } let(:commit_status) { create(:commit_status, commit: ci_commit) }
let(:guest) { create_user(ProjectMember::GUEST) }
let(:reporter) { create_user(ProjectMember::REPORTER) }
let(:developer) { create_user(ProjectMember::DEVELOPER) }
describe "GET /projects/:id/repository/commits/:sha/statuses" do describe "GET /projects/:id/repository/commits/:sha/statuses" do
it_behaves_like 'a paginated resources' do it_behaves_like 'a paginated resources' do
let(:request) { get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", user) } let(:request) { get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", reporter) }
end end
context "reporter user" do context "reporter user" do
...@@ -29,7 +28,7 @@ describe API::CommitStatus, api: true do ...@@ -29,7 +28,7 @@ describe API::CommitStatus, api: true do
end end
it "should return latest commit statuses" do it "should return latest commit statuses" do
get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", user) get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", reporter)
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
...@@ -39,7 +38,7 @@ describe API::CommitStatus, api: true do ...@@ -39,7 +38,7 @@ describe API::CommitStatus, api: true do
end end
it "should return all commit statuses" do it "should return all commit statuses" do
get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?all=1", user) get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?all=1", reporter)
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
...@@ -47,7 +46,7 @@ describe API::CommitStatus, api: true do ...@@ -47,7 +46,7 @@ describe API::CommitStatus, api: true do
end end
it "should return latest commit statuses for specific ref" do it "should return latest commit statuses for specific ref" do
get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?ref=develop", user) get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?ref=develop", reporter)
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
...@@ -55,7 +54,7 @@ describe API::CommitStatus, api: true do ...@@ -55,7 +54,7 @@ describe API::CommitStatus, api: true do
end end
it "should return latest commit statuses for specific name" do it "should return latest commit statuses for specific name" do
get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?name=coverage", user) get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses?name=coverage", reporter)
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
...@@ -65,7 +64,7 @@ describe API::CommitStatus, api: true do ...@@ -65,7 +64,7 @@ describe API::CommitStatus, api: true do
context "guest user" do context "guest user" do
it "should not return project commits" do it "should not return project commits" do
get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", user2) get api("/projects/#{project.id}/repository/commits/#{commit.id}/statuses", guest)
expect(response.status).to eq(403) expect(response.status).to eq(403)
end end
end end
...@@ -81,10 +80,10 @@ describe API::CommitStatus, api: true do ...@@ -81,10 +80,10 @@ describe API::CommitStatus, api: true do
describe 'POST /projects/:id/statuses/:sha' do describe 'POST /projects/:id/statuses/:sha' do
let(:post_url) { "/projects/#{project.id}/statuses/#{commit.id}" } let(:post_url) { "/projects/#{project.id}/statuses/#{commit.id}" }
context 'reporter user' do context 'developer user' do
context 'should create commit status' do context 'should create commit status' do
it 'with only required parameters' do it 'with only required parameters' do
post api(post_url, user), state: 'success' post api(post_url, developer), state: 'success'
expect(response.status).to eq(201) expect(response.status).to eq(201)
expect(json_response['sha']).to eq(commit.id) expect(json_response['sha']).to eq(commit.id)
expect(json_response['status']).to eq('success') expect(json_response['status']).to eq('success')
...@@ -95,7 +94,7 @@ describe API::CommitStatus, api: true do ...@@ -95,7 +94,7 @@ describe API::CommitStatus, api: true do
end end
it 'with all optional parameters' do it 'with all optional parameters' do
post api(post_url, user), state: 'success', context: 'coverage', ref: 'develop', target_url: 'url', description: 'test' post api(post_url, developer), state: 'success', context: 'coverage', ref: 'develop', target_url: 'url', description: 'test'
expect(response.status).to eq(201) expect(response.status).to eq(201)
expect(json_response['sha']).to eq(commit.id) expect(json_response['sha']).to eq(commit.id)
expect(json_response['status']).to eq('success') expect(json_response['status']).to eq('success')
...@@ -108,25 +107,32 @@ describe API::CommitStatus, api: true do ...@@ -108,25 +107,32 @@ describe API::CommitStatus, api: true do
context 'should not create commit status' do context 'should not create commit status' do
it 'with invalid state' do it 'with invalid state' do
post api(post_url, user), state: 'invalid' post api(post_url, developer), state: 'invalid'
expect(response.status).to eq(400) expect(response.status).to eq(400)
end end
it 'without state' do it 'without state' do
post api(post_url, user) post api(post_url, developer)
expect(response.status).to eq(400) expect(response.status).to eq(400)
end end
it 'invalid commit' do it 'invalid commit' do
post api("/projects/#{project.id}/statuses/invalid_sha", user), state: 'running' post api("/projects/#{project.id}/statuses/invalid_sha", developer), state: 'running'
expect(response.status).to eq(404) expect(response.status).to eq(404)
end end
end end
end end
context 'reporter user' do
it 'should not create commit status' do
post api(post_url, reporter)
expect(response.status).to eq(403)
end
end
context 'guest user' do context 'guest user' do
it 'should not create commit status' do it 'should not create commit status' do
post api(post_url, user2) post api(post_url, guest)
expect(response.status).to eq(403) expect(response.status).to eq(403)
end end
end end
...@@ -138,4 +144,10 @@ describe API::CommitStatus, api: true do ...@@ -138,4 +144,10 @@ describe API::CommitStatus, api: true do
end end
end end
end end
def create_user(access_level)
user = create(:user)
create(:project_member, user: user, project: project, access_level: access_level)
user
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment