Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API fixes #1735

Merged
merged 6 commits into from
Nov 7, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ master
- Fixed bug with gitolite keys
- [API] list one project hook
- [API] edit project hook
- [API] add project snippets list
- [API] list project snippets
- [API] allow to authorize using private token in HTTP header
- [API] add user creation

Expand Down
6 changes: 2 additions & 4 deletions doc/api/users.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,12 @@ POST /users

Parameters:
+ `email` (required) - Email
+ `name` (required) - Name
+ `password` (required) - Password
+ `password_confirmation` (required) - Password confirmation
+ `name` - Name
+ `skype` - Skype ID
+ `linkedin` - Linkedin
+ `twitter` - Twitter account
+ `projects_limit` - Limit projects wich user can create

+ `projects_limit` - Number of projects user can create

Will return created user with status `201 Created` on success, or `404 Not
found` on fail.
Expand Down
11 changes: 5 additions & 6 deletions lib/api/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,23 @@ class Users < Grape::API
@user = User.find(params[:id])
present @user, with: Entities::User
end

# Create user. Available only for admin
#
# Parameters:
# email (required) - Email
# name (required) - Name
# password (required) - Password
# password_confirmation (required) - Password confirmation
# name - Name
# skype - Skype ID
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea :)

# linkedin - Linkedin
# twitter - Twitter account
# projects_limit - Limit projects wich user can create
# projects_limit - Number of projects user can create
# Example Request:
# POST /users
post do
authenticated_as_admin!
attrs = attributes_for_keys [:email, :name, :password, :password_confirmation, :skype, :linkedin, :twitter, :projects_limit]
user = User.new attrs
attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit]
user = User.new attrs, as: :admin
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why as :admin ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if user.save
present user, with: Entities::User
else
Expand Down
12 changes: 6 additions & 6 deletions spec/requests/api/projects_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
response.status.should == 201
end

it "should repsond with 404 on failure" do
it "should respond with 404 on failure" do
post api("/projects", user)
response.status.should == 404
end
Expand Down Expand Up @@ -188,16 +188,16 @@
}.to change {project.hooks.count}.by(1)
end
end

describe "PUT /projects/:id/hooks/:hook_id" do
it "should update an existing project hook" do
put api("/projects/#{project.code}/hooks/#{hook.id}", user),
url: 'http://example.com'
url: 'http://example.org'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the point?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to test the changes.

response.status.should == 200
json_response['url'].should == 'http://example.com'
json_response['url'].should == 'http://example.org'
end
end


describe "DELETE /projects/:id/hooks" do
it "should delete hook from project" do
Expand Down Expand Up @@ -239,7 +239,7 @@
end

describe "GET /projects/:id/snippets" do
it "should return a project snippet" do
it "should return an array of project snippets" do
get api("/projects/#{project.code}/snippets", user)
response.status.should == 200
json_response.should be_an Array
Expand Down
8 changes: 4 additions & 4 deletions spec/requests/api/users_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
include ApiHelpers

let(:user) { Factory :user }
let(:admin) {Factory :admin}
let(:admin) { Factory :admin }
let(:key) { Factory :key, user: user }

describe "GET /users" do
Expand Down Expand Up @@ -42,9 +42,9 @@
end

it "should create user" do
expect{
post api("/users", admin), Factory.attributes(:user)
}.to change{User.count}.by(1)
expect {
post api("/users", admin), Factory.attributes(:user, projects_limit: 3)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why projects_limit: 3 ??
I've already commented on your fork, so one more time did it here.

}.to change { User.count }.by(1)
end

it "shouldn't available for non admin users" do
Expand Down