Commit c1173e27071b83399cd92406b229be7f0eca59f1
1 parent
65abd8b2
Exists in
master
and in
4 other branches
API on Projects creation implemented
Showing
2 changed files
with
58 additions
and
0 deletions
Show diff stats
lib/api/projects.rb
| @@ -23,6 +23,27 @@ module Gitlab | @@ -23,6 +23,27 @@ module Gitlab | ||
| 23 | present user_project, with: Entities::Project | 23 | present user_project, with: Entities::Project |
| 24 | end | 24 | end |
| 25 | 25 | ||
| 26 | + # Create new project | ||
| 27 | + # | ||
| 28 | + # Parameters: | ||
| 29 | + # name (required) - name for new project | ||
| 30 | + # code (optional) - code for new project, if not set used name | ||
| 31 | + # path (optional) - oath for new project, if not set used name | ||
| 32 | + # Example Request | ||
| 33 | + # POST /projects | ||
| 34 | + post do | ||
| 35 | + project = {} | ||
| 36 | + project[:name] = params[:name] | ||
| 37 | + project[:code] = params[:code] || project[:name] | ||
| 38 | + project[:path] = params[:path] || project[:name] | ||
| 39 | + @project = Project.create_by_user(project, current_user) | ||
| 40 | + if @project.saved? | ||
| 41 | + present @project, with: Entities::Project | ||
| 42 | + else | ||
| 43 | + error!({'message' => '404 Not found'}, 404) | ||
| 44 | + end | ||
| 45 | + end | ||
| 46 | + | ||
| 26 | # Get a project repository branches | 47 | # Get a project repository branches |
| 27 | # | 48 | # |
| 28 | # Parameters: | 49 | # Parameters: |
spec/requests/api/projects_spec.rb
| @@ -25,6 +25,43 @@ describe Gitlab::API do | @@ -25,6 +25,43 @@ describe Gitlab::API do | ||
| 25 | end | 25 | end |
| 26 | end | 26 | end |
| 27 | 27 | ||
| 28 | + describe "POST /projects" do | ||
| 29 | + it "should create new project without code and path" do | ||
| 30 | + lambda { | ||
| 31 | + name = "foo" | ||
| 32 | + post api("/projects", user), { | ||
| 33 | + name: name | ||
| 34 | + } | ||
| 35 | + response.status.should == 201 | ||
| 36 | + json_response["name"].should == name | ||
| 37 | + json_response["code"].should == name | ||
| 38 | + json_response["path"].should == name | ||
| 39 | + }.should change{Project.count}.by(1) | ||
| 40 | + end | ||
| 41 | + it "should create new project" do | ||
| 42 | + lambda { | ||
| 43 | + name = "foo" | ||
| 44 | + path = "bar" | ||
| 45 | + code = "bazz" | ||
| 46 | + post api("/projects", user), { | ||
| 47 | + code: code, | ||
| 48 | + path: path, | ||
| 49 | + name: name | ||
| 50 | + } | ||
| 51 | + response.status.should == 201 | ||
| 52 | + json_response["name"].should == name | ||
| 53 | + json_response["path"].should == path | ||
| 54 | + json_response["code"].should == code | ||
| 55 | + }.should change{Project.count}.by(1) | ||
| 56 | + end | ||
| 57 | + it "should not create project without name" do | ||
| 58 | + lambda { | ||
| 59 | + post api("/projects", user) | ||
| 60 | + response.status.should == 404 | ||
| 61 | + }.should_not change{Project.count} | ||
| 62 | + end | ||
| 63 | + end | ||
| 64 | + | ||
| 28 | describe "GET /projects/:id" do | 65 | describe "GET /projects/:id" do |
| 29 | it "should return a project by id" do | 66 | it "should return a project by id" do |
| 30 | get api("/projects/#{project.id}", user) | 67 | get api("/projects/#{project.id}", user) |