Commit 6dc4d1b5 authored by Robert Schilling's avatar Robert Schilling

Extend to PUT request

parent ceaee58c
...@@ -59,7 +59,7 @@ module API ...@@ -59,7 +59,7 @@ module API
params :simple_file_params do params :simple_file_params do
requires :file_path, type: String, desc: 'The url encoded path to the file. Ex. lib%2Fclass%2Erb' requires :file_path, type: String, desc: 'The url encoded path to the file. Ex. lib%2Fclass%2Erb'
requires :branch, type: String, desc: 'Name of the branch to commit into. To create a new branch, also provide `start_branch`.' requires :branch, type: String, desc: 'Name of the branch to commit into. To create a new branch, also provide `start_branch`.'
requires :commit_message, type: String, regexp: /^\S+$/, desc: 'Commit message' requires :commit_message, type: String, allow_blank: false, desc: 'Commit message'
optional :start_branch, type: String, desc: 'Name of the branch to start the new commit from' optional :start_branch, type: String, desc: 'Name of the branch to start the new commit from'
optional :author_email, type: String, desc: 'The email of the author' optional :author_email, type: String, desc: 'The email of the author'
optional :author_name, type: String, desc: 'The name of the author' optional :author_name, type: String, desc: 'The name of the author'
......
...@@ -313,7 +313,7 @@ describe API::Files do ...@@ -313,7 +313,7 @@ describe API::Files do
describe "POST /projects/:id/repository/files/:file_path" do describe "POST /projects/:id/repository/files/:file_path" do
let!(:file_path) { "new_subfolder%2Fnewfile%2Erb" } let!(:file_path) { "new_subfolder%2Fnewfile%2Erb" }
let(:valid_params) do let(:params) do
{ {
branch: "master", branch: "master",
content: "puts 8", content: "puts 8",
...@@ -322,7 +322,7 @@ describe API::Files do ...@@ -322,7 +322,7 @@ describe API::Files do
end end
it "creates a new file in project repo" do it "creates a new file in project repo" do
post api(route(file_path), user), valid_params post api(route(file_path), user), params
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(201)
expect(json_response["file_path"]).to eq(CGI.unescape(file_path)) expect(json_response["file_path"]).to eq(CGI.unescape(file_path))
...@@ -338,13 +338,9 @@ describe API::Files do ...@@ -338,13 +338,9 @@ describe API::Files do
end end
it 'returns a 400 bad request if the commit message is empty' do it 'returns a 400 bad request if the commit message is empty' do
invalid_params = { params[:commit_message] = ''
branch: 'master',
content: 'puts 8',
commit_message: ''
}
post api(route(file_path), user), invalid_params post api(route(file_path), user), params
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(400)
end end
...@@ -353,16 +349,16 @@ describe API::Files do ...@@ -353,16 +349,16 @@ describe API::Files do
allow_any_instance_of(Repository).to receive(:create_file) allow_any_instance_of(Repository).to receive(:create_file)
.and_raise(Gitlab::Git::CommitError, 'Cannot create file') .and_raise(Gitlab::Git::CommitError, 'Cannot create file')
post api(route("any%2Etxt"), user), valid_params post api(route("any%2Etxt"), user), params
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(400)
end end
context "when specifying an author" do context "when specifying an author" do
it "creates a new file with the specified author" do it "creates a new file with the specified author" do
valid_params.merge!(author_email: author_email, author_name: author_name) params.merge!(author_email: author_email, author_name: author_name)
post api(route("new_file_with_author%2Etxt"), user), valid_params post api(route("new_file_with_author%2Etxt"), user), params
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(201)
expect(response.content_type).to eq('application/json') expect(response.content_type).to eq('application/json')
...@@ -376,7 +372,7 @@ describe API::Files do ...@@ -376,7 +372,7 @@ describe API::Files do
let!(:project) { create(:project_empty_repo, namespace: user.namespace ) } let!(:project) { create(:project_empty_repo, namespace: user.namespace ) }
it "creates a new file in project repo" do it "creates a new file in project repo" do
post api(route("newfile%2Erb"), user), valid_params post api(route("newfile%2Erb"), user), params
expect(response).to have_gitlab_http_status(201) expect(response).to have_gitlab_http_status(201)
expect(json_response['file_path']).to eq('newfile.rb') expect(json_response['file_path']).to eq('newfile.rb')
...@@ -388,7 +384,7 @@ describe API::Files do ...@@ -388,7 +384,7 @@ describe API::Files do
end end
describe "PUT /projects/:id/repository/files" do describe "PUT /projects/:id/repository/files" do
let(:valid_params) do let(:params) do
{ {
branch: 'master', branch: 'master',
content: 'puts 8', content: 'puts 8',
...@@ -397,7 +393,7 @@ describe API::Files do ...@@ -397,7 +393,7 @@ describe API::Files do
end end
it "updates existing file in project repo" do it "updates existing file in project repo" do
put api(route(file_path), user), valid_params put api(route(file_path), user), params
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
expect(json_response['file_path']).to eq(CGI.unescape(file_path)) expect(json_response['file_path']).to eq(CGI.unescape(file_path))
...@@ -406,8 +402,16 @@ describe API::Files do ...@@ -406,8 +402,16 @@ describe API::Files do
expect(last_commit.author_name).to eq(user.name) expect(last_commit.author_name).to eq(user.name)
end end
it 'returns a 400 bad request if the commit message is empty' do
params[:commit_message] = ''
put api(route(file_path), user), params
expect(response).to have_gitlab_http_status(400)
end
it "returns a 400 bad request if update existing file with stale last commit id" do it "returns a 400 bad request if update existing file with stale last commit id" do
params_with_stale_id = valid_params.merge(last_commit_id: 'stale') params_with_stale_id = params.merge(last_commit_id: 'stale')
put api(route(file_path), user), params_with_stale_id put api(route(file_path), user), params_with_stale_id
...@@ -418,7 +422,7 @@ describe API::Files do ...@@ -418,7 +422,7 @@ describe API::Files do
it "updates existing file in project repo with accepts correct last commit id" do it "updates existing file in project repo with accepts correct last commit id" do
last_commit = Gitlab::Git::Commit last_commit = Gitlab::Git::Commit
.last_for_path(project.repository, 'master', URI.unescape(file_path)) .last_for_path(project.repository, 'master', URI.unescape(file_path))
params_with_correct_id = valid_params.merge(last_commit_id: last_commit.id) params_with_correct_id = params.merge(last_commit_id: last_commit.id)
put api(route(file_path), user), params_with_correct_id put api(route(file_path), user), params_with_correct_id
...@@ -433,9 +437,9 @@ describe API::Files do ...@@ -433,9 +437,9 @@ describe API::Files do
context "when specifying an author" do context "when specifying an author" do
it "updates a file with the specified author" do it "updates a file with the specified author" do
valid_params.merge!(author_email: author_email, author_name: author_name, content: "New content") params.merge!(author_email: author_email, author_name: author_name, content: "New content")
put api(route(file_path), user), valid_params put api(route(file_path), user), params
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
last_commit = project.repository.commit.raw last_commit = project.repository.commit.raw
......
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