Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
6dc4d1b5
Commit
6dc4d1b5
authored
Aug 21, 2018
by
Robert Schilling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extend to PUT request
parent
ceaee58c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
19 deletions
+23
-19
lib/api/files.rb
lib/api/files.rb
+1
-1
spec/requests/api/files_spec.rb
spec/requests/api/files_spec.rb
+22
-18
No files found.
lib/api/files.rb
View file @
6dc4d1b5
...
@@ -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'
...
...
spec/requests/api/files_spec.rb
View file @
6dc4d1b5
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment