Commit e96d77d3dbd789981b8e85e7afba9a5908d79483
1 parent
dffc2b8a
Exists in
master
and in
4 other branches
API: issues documentation and API functions updated
The issues documentation is updated with infos to status codes and the deprecated `DELETE` function and how to close an issue. A few more tests added to check status codes of API functions.
Showing
3 changed files
with
77 additions
and
7 deletions
Show diff stats
doc/api/issues.md
1 | ## List issues | 1 | ## List issues |
2 | 2 | ||
3 | -Get all issues created by authenticed user. | 3 | +Get all issues created by authenticed user. This function takes pagination parameters |
4 | +`page` and `per_page` to get a list of issues. | ||
4 | 5 | ||
5 | ``` | 6 | ``` |
6 | GET /issues | 7 | GET /issues |
@@ -68,9 +69,18 @@ GET /issues | @@ -68,9 +69,18 @@ GET /issues | ||
68 | ] | 69 | ] |
69 | ``` | 70 | ``` |
70 | 71 | ||
72 | +Return values: | ||
73 | + | ||
74 | ++ `200 Ok` on success and the list of issues | ||
75 | ++ `401 Unauthorized` if user is not authenticated | ||
76 | ++ `404 Not Found` if something fails | ||
77 | + | ||
78 | + | ||
79 | + | ||
71 | ## List project issues | 80 | ## List project issues |
72 | 81 | ||
73 | -Get a list of project issues. | 82 | +Get a list of project issues. This function accepts pagination parameters `page` and `per_page` |
83 | +to return the list of project issues. | ||
74 | 84 | ||
75 | ``` | 85 | ``` |
76 | GET /projects/:id/issues | 86 | GET /projects/:id/issues |
@@ -80,9 +90,16 @@ Parameters: | @@ -80,9 +90,16 @@ Parameters: | ||
80 | 90 | ||
81 | + `id` (required) - The ID of a project | 91 | + `id` (required) - The ID of a project |
82 | 92 | ||
93 | +Return values: | ||
94 | + | ||
95 | ++ `200 Ok` on success and the list of project issues | ||
96 | ++ `401 Unauthorized` if user is not authenticated | ||
97 | ++ `404 Not Found` if project ID not found | ||
98 | + | ||
99 | + | ||
83 | ## Single issue | 100 | ## Single issue |
84 | 101 | ||
85 | -Get a project issue. | 102 | +Gets a single project issue. |
86 | 103 | ||
87 | ``` | 104 | ``` |
88 | GET /projects/:id/issues/:issue_id | 105 | GET /projects/:id/issues/:issue_id |
@@ -133,9 +150,16 @@ Parameters: | @@ -133,9 +150,16 @@ Parameters: | ||
133 | } | 150 | } |
134 | ``` | 151 | ``` |
135 | 152 | ||
153 | +Return values: | ||
154 | + | ||
155 | ++ `200 Ok` on success and the list of project issues | ||
156 | ++ `401 Unauthorized` if user is not authenticated | ||
157 | ++ `404 Not Found` if project ID or issue ID not found | ||
158 | + | ||
159 | + | ||
136 | ## New issue | 160 | ## New issue |
137 | 161 | ||
138 | -Create a new project issue. | 162 | +Creates a new project issue. |
139 | 163 | ||
140 | ``` | 164 | ``` |
141 | POST /projects/:id/issues | 165 | POST /projects/:id/issues |
@@ -150,11 +174,17 @@ Parameters: | @@ -150,11 +174,17 @@ Parameters: | ||
150 | + `milestone_id` (optional) - The ID of a milestone to assign issue | 174 | + `milestone_id` (optional) - The ID of a milestone to assign issue |
151 | + `labels` (optional) - Comma-separated label names for an issue | 175 | + `labels` (optional) - Comma-separated label names for an issue |
152 | 176 | ||
153 | -Will return created issue with status `201 Created` on success, or `404 Not found` on fail. | 177 | +Return values: |
178 | + | ||
179 | ++ `201 Created` on success and the newly created project issue | ||
180 | ++ `400 Bad Request` if the required attribute title is not given | ||
181 | ++ `401 Unauthorized` if user is not authenticated | ||
182 | ++ `404 Not Found` if project ID not found | ||
183 | + | ||
154 | 184 | ||
155 | ## Edit issue | 185 | ## Edit issue |
156 | 186 | ||
157 | -Update an existing project issue. | 187 | +Updates an existing project issue. This function is also used to mark an issue as closed. |
158 | 188 | ||
159 | ``` | 189 | ``` |
160 | PUT /projects/:id/issues/:issue_id | 190 | PUT /projects/:id/issues/:issue_id |
@@ -171,5 +201,28 @@ Parameters: | @@ -171,5 +201,28 @@ Parameters: | ||
171 | + `labels` (optional) - Comma-separated label names for an issue | 201 | + `labels` (optional) - Comma-separated label names for an issue |
172 | + `closed` (optional) - The state of an issue (0 = false, 1 = true) | 202 | + `closed` (optional) - The state of an issue (0 = false, 1 = true) |
173 | 203 | ||
174 | -Will return updated issue with status `200 OK` on success, or `404 Not found` on fail. | 204 | +Return values: |
205 | + | ||
206 | ++ `200 Ok` on success and the update project issue | ||
207 | ++ `401 Unauthorized` if user is not authenticated | ||
208 | ++ `404 Not Found` if project ID or issue ID not found | ||
209 | + | ||
210 | + | ||
211 | +## Delete existing issue (**Deprecated**) | ||
212 | + | ||
213 | +The function is deprecated and returns a `405 Method Not Allowed` | ||
214 | +error if called. An issue gets now closed and is done by calling `PUT /projects/:id/issues/:issue_id` with | ||
215 | +parameter `closed` set to 1. | ||
216 | + | ||
217 | +``` | ||
218 | +DELETE /projects/:id/issues/:issue_id | ||
219 | +``` | ||
220 | + | ||
221 | +Parameters: | ||
222 | + | ||
223 | ++ `id` (required) - The project ID | ||
224 | ++ `issue_id` (required) - The ID of the issue | ||
225 | + | ||
226 | +Return values: | ||
175 | 227 | ||
228 | ++ `405 Method Not Allowed` is always returned, because the function is deprecated |
lib/api/issues.rb
@@ -48,6 +48,7 @@ module Gitlab | @@ -48,6 +48,7 @@ module Gitlab | ||
48 | # Example Request: | 48 | # Example Request: |
49 | # POST /projects/:id/issues | 49 | # POST /projects/:id/issues |
50 | post ":id/issues" do | 50 | post ":id/issues" do |
51 | + bad_request!(:title) unless params[:title].present? | ||
51 | attrs = attributes_for_keys [:title, :description, :assignee_id, :milestone_id] | 52 | attrs = attributes_for_keys [:title, :description, :assignee_id, :milestone_id] |
52 | attrs[:label_list] = params[:labels] if params[:labels].present? | 53 | attrs[:label_list] = params[:labels] if params[:labels].present? |
53 | @issue = user_project.issues.new attrs | 54 | @issue = user_project.issues.new attrs |
spec/requests/api/issues_spec.rb
@@ -41,6 +41,11 @@ describe Gitlab::API do | @@ -41,6 +41,11 @@ describe Gitlab::API do | ||
41 | response.status.should == 200 | 41 | response.status.should == 200 |
42 | json_response['title'].should == issue.title | 42 | json_response['title'].should == issue.title |
43 | end | 43 | end |
44 | + | ||
45 | + it "should return 404 if issue id not found" do | ||
46 | + get api("/projects/#{project.id}/issues/54321", user) | ||
47 | + response.status.should == 404 | ||
48 | + end | ||
44 | end | 49 | end |
45 | 50 | ||
46 | describe "POST /projects/:id/issues" do | 51 | describe "POST /projects/:id/issues" do |
@@ -52,6 +57,11 @@ describe Gitlab::API do | @@ -52,6 +57,11 @@ describe Gitlab::API do | ||
52 | json_response['description'].should be_nil | 57 | json_response['description'].should be_nil |
53 | json_response['labels'].should == ['label', 'label2'] | 58 | json_response['labels'].should == ['label', 'label2'] |
54 | end | 59 | end |
60 | + | ||
61 | + it "should return a 400 bad request if title not given" do | ||
62 | + post api("/projects/#{project.id}/issues", user), labels: 'label, label2' | ||
63 | + response.status.should == 400 | ||
64 | + end | ||
55 | end | 65 | end |
56 | 66 | ||
57 | describe "PUT /projects/:id/issues/:issue_id to update only title" do | 67 | describe "PUT /projects/:id/issues/:issue_id to update only title" do |
@@ -62,6 +72,12 @@ describe Gitlab::API do | @@ -62,6 +72,12 @@ describe Gitlab::API do | ||
62 | 72 | ||
63 | json_response['title'].should == 'updated title' | 73 | json_response['title'].should == 'updated title' |
64 | end | 74 | end |
75 | + | ||
76 | + it "should return 404 error if issue id not found" do | ||
77 | + put api("/projects/#{project.id}/issues/44444", user), | ||
78 | + title: 'updated title' | ||
79 | + response.status.should == 404 | ||
80 | + end | ||
65 | end | 81 | end |
66 | 82 | ||
67 | describe "PUT /projects/:id/issues/:issue_id to update state and label" do | 83 | describe "PUT /projects/:id/issues/:issue_id to update state and label" do |