From 2bbf75f2114530f499bb1a917f000c7605d147f1 Mon Sep 17 00:00:00 2001 From: Robert Schilling <rschilling@student.tugraz.at> Date: Tue, 24 Oct 2017 18:02:08 +0300 Subject: Start with tests --- spec/requests/api/commits_spec.rb | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'spec/requests') diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb index ff5f207487b..964dd7ad39e 100644 --- a/spec/requests/api/commits_spec.rb +++ b/spec/requests/api/commits_spec.rb @@ -465,6 +465,66 @@ describe API::Commits do end end + describe 'GET /projects/:id/repository/commits/:sha/refs' do + let(:project) { create(:project, :public, :repository) } + let(:tag) { project.repository.find_tag('v1.1.0') } + let(:commit_id) { tag.dereferenced_target.id } + let(:route) { "/projects/#{project_id}/repository/commits/#{commit_id}/refs" } + + context 'when ref does not exist' do + let(:commit_id) { 'unknown' } + + it_behaves_like '404 response' do + let(:request) { get api(route, current_user) } + let(:message) { '404 Commit Not Found' } + end + end + + context 'when repository is disabled' do + include_context 'disabled repository' + + it_behaves_like '403 response' do + let(:request) { get api(route, current_user) } + end + end + + context 'for a valid commit' do + it 'returns all refs with no scope' do + get api(route, current_user) + + repo_refs = project.repository.branch_names_contains(commit_id) + repo_refs.push(*project.repository.tag_names_contains(commit_id)) + + expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + end + + it 'returns all refs' do + get api(route, current_user), type: 'all' + + repo_refs = project.repository.branch_names_contains(commit_id) + repo_refs.push(*project.repository.tag_names_contains(commit_id)) + + expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + end + + it 'returns the branch refs' do + get api(route, current_user), type: 'branches' + + repo_refs = project.repository.branch_names_contains(commit_id) + + expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + end + + it 'returns the tag refs' do + get api(route, current_user), type: 'tags' + + repo_refs = project.repository.tag_names_contains(commit_id) + + expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + end + end + end + describe 'GET /projects/:id/repository/commits/:sha' do let(:commit) { project.repository.commit } let(:commit_id) { commit.id } -- cgit v1.2.1 From 922d156a5e0412a12662df94e03479f7ed015f7b Mon Sep 17 00:00:00 2001 From: Robert Schilling <rschilling@student.tugraz.at> Date: Fri, 9 Feb 2018 17:46:41 +0100 Subject: Separate branch and tag names --- spec/requests/api/commits_spec.rb | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb index 964dd7ad39e..ac25f134697 100644 --- a/spec/requests/api/commits_spec.rb +++ b/spec/requests/api/commits_spec.rb @@ -492,35 +492,37 @@ describe API::Commits do it 'returns all refs with no scope' do get api(route, current_user) - repo_refs = project.repository.branch_names_contains(commit_id) - repo_refs.push(*project.repository.tag_names_contains(commit_id)) + branch_refs = project.repository.branch_names_contains(commit_id) + tag_refs = project.repository.tag_names_contains(commit_id) - expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) + expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) end it 'returns all refs' do get api(route, current_user), type: 'all' - repo_refs = project.repository.branch_names_contains(commit_id) - repo_refs.push(*project.repository.tag_names_contains(commit_id)) + branch_refs = project.repository.branch_names_contains(commit_id) + tag_refs = project.repository.tag_names_contains(commit_id) - expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) + expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) end it 'returns the branch refs' do get api(route, current_user), type: 'branches' - repo_refs = project.repository.branch_names_contains(commit_id) + branch_refs = project.repository.branch_names_contains(commit_id) - expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) end it 'returns the tag refs' do get api(route, current_user), type: 'tags' - repo_refs = project.repository.tag_names_contains(commit_id) + tag_refs = project.repository.tag_names_contains(commit_id) - expect(json_response.map { |refs| refs['name'] }).to eq(repo_refs) + expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) end end end -- cgit v1.2.1 From a724f7e35f9f8ed9692b0f3f4d6c8a62632cdec4 Mon Sep 17 00:00:00 2001 From: Robert Schilling <rschilling@student.tugraz.at> Date: Tue, 13 Feb 2018 20:22:37 +0100 Subject: Refactor commits/refs API to use hash and add pagination headers --- spec/requests/api/commits_spec.rb | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb index ac25f134697..31959d28fee 100644 --- a/spec/requests/api/commits_spec.rb +++ b/spec/requests/api/commits_spec.rb @@ -490,39 +490,43 @@ describe API::Commits do context 'for a valid commit' do it 'returns all refs with no scope' do - get api(route, current_user) + get api(route, current_user), per_page: 100 - branch_refs = project.repository.branch_names_contains(commit_id) - tag_refs = project.repository.tag_names_contains(commit_id) + refs = project.repository.branch_names_contains(commit_id).map {|name| ['branch', name]} + refs.concat(project.repository.tag_names_contains(commit_id).map {|name| ['tag', name]}) - expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) - expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) + expect(response).to have_gitlab_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.map { |r| [r['type'], r['name']] }.compact).to eq(refs) end it 'returns all refs' do - get api(route, current_user), type: 'all' + get api(route, current_user), type: 'all', per_page: 100 - branch_refs = project.repository.branch_names_contains(commit_id) - tag_refs = project.repository.tag_names_contains(commit_id) + refs = project.repository.branch_names_contains(commit_id).map {|name| ['branch', name]} + refs.concat(project.repository.tag_names_contains(commit_id).map {|name| ['tag', name]}) - expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) - expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) + expect(response).to have_gitlab_http_status(200) + expect(json_response.map { |r| [r['type'], r['name']] }.compact).to eq(refs) end it 'returns the branch refs' do - get api(route, current_user), type: 'branches' + get api(route, current_user), type: 'branch', per_page: 100 - branch_refs = project.repository.branch_names_contains(commit_id) + refs = project.repository.branch_names_contains(commit_id).map {|name| ['branch', name]} - expect(json_response.map { |refs| refs['branch_name'] }.compact).to eq(branch_refs) + expect(response).to have_gitlab_http_status(200) + expect(json_response.map { |r| [r['type'], r['name']] }.compact).to eq(refs) end it 'returns the tag refs' do - get api(route, current_user), type: 'tags' + get api(route, current_user), type: 'tag', per_page: 100 - tag_refs = project.repository.tag_names_contains(commit_id) + refs = project.repository.tag_names_contains(commit_id).map {|name| ['tag', name]} - expect(json_response.map { |refs| refs['tag_name'] }.compact).to eq(tag_refs) + expect(response).to have_gitlab_http_status(200) + expect(json_response.map { |r| [r['type'], r['name']] }.compact).to eq(refs) end end end -- cgit v1.2.1