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) |