Merge pull request #1347 from AlexDenisov/api_project_creation
API for new project creation
This commit is contained in:
commit
cc03600b22
|
@ -89,6 +89,24 @@ Parameters:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Create project
|
||||||
|
|
||||||
|
Create new project owned by user
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /projects
|
||||||
|
```
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
+ `name` (required) - new project name
|
||||||
|
+ `code` (optional) - new project code, uses project name if not set
|
||||||
|
+ `path` (optional) - new project path, uses project name if not set
|
||||||
|
|
||||||
|
Will return created project with status `201 Created` on success, or `404 Not
|
||||||
|
found` on fail.
|
||||||
|
|
||||||
|
|
||||||
## Project repository branches
|
## Project repository branches
|
||||||
|
|
||||||
Get a list of project repository branches sorted by name alphabetically.
|
Get a list of project repository branches sorted by name alphabetically.
|
||||||
|
|
|
@ -23,6 +23,27 @@ module Gitlab
|
||||||
present user_project, with: Entities::Project
|
present user_project, with: Entities::Project
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Create new project
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# name (required) - name for new project
|
||||||
|
# code (optional) - code for new project, uses project name if not set
|
||||||
|
# path (optional) - path for new project, uses project name if not set
|
||||||
|
# Example Request
|
||||||
|
# POST /projects
|
||||||
|
post do
|
||||||
|
project = {}
|
||||||
|
project[:name] = params[:name]
|
||||||
|
project[:code] = params[:code] || project[:name]
|
||||||
|
project[:path] = params[:path] || project[:name]
|
||||||
|
@project = Project.create_by_user(project, current_user)
|
||||||
|
if @project.saved?
|
||||||
|
present @project, with: Entities::Project
|
||||||
|
else
|
||||||
|
error!({'message' => '404 Not found'}, 404)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Get a project repository branches
|
# Get a project repository branches
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
|
|
@ -25,6 +25,43 @@ describe Gitlab::API do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "POST /projects" do
|
||||||
|
it "should create new project without code and path" do
|
||||||
|
lambda {
|
||||||
|
name = "foo"
|
||||||
|
post api("/projects", user), {
|
||||||
|
name: name
|
||||||
|
}
|
||||||
|
response.status.should == 201
|
||||||
|
json_response["name"].should == name
|
||||||
|
json_response["code"].should == name
|
||||||
|
json_response["path"].should == name
|
||||||
|
}.should change{Project.count}.by(1)
|
||||||
|
end
|
||||||
|
it "should create new project" do
|
||||||
|
lambda {
|
||||||
|
name = "foo"
|
||||||
|
path = "bar"
|
||||||
|
code = "bazz"
|
||||||
|
post api("/projects", user), {
|
||||||
|
code: code,
|
||||||
|
path: path,
|
||||||
|
name: name
|
||||||
|
}
|
||||||
|
response.status.should == 201
|
||||||
|
json_response["name"].should == name
|
||||||
|
json_response["path"].should == path
|
||||||
|
json_response["code"].should == code
|
||||||
|
}.should change{Project.count}.by(1)
|
||||||
|
end
|
||||||
|
it "should not create project without name" do
|
||||||
|
lambda {
|
||||||
|
post api("/projects", user)
|
||||||
|
response.status.should == 404
|
||||||
|
}.should_not change{Project.count}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /projects/:id" do
|
describe "GET /projects/:id" do
|
||||||
it "should return a project by id" do
|
it "should return a project by id" do
|
||||||
get api("/projects/#{project.id}", user)
|
get api("/projects/#{project.id}", user)
|
||||||
|
|
Loading…
Reference in a new issue