Commit addf3a3360316be58ac416e7bf63bb591c6e03d6

Authored by Leandro Santos
Committed by Rodrigo Souto
1 parent ce1cc82a

api: adding method for user and community creation

lib/api/v1/articles.rb
@@ -59,7 +59,7 @@ module API @@ -59,7 +59,7 @@ module API
59 end 59 end
60 60
61 # Example Request: 61 # Example Request:
62 - # POST api/v1/communites/:community_id/articles?private_toke=234298743290432&article[name]=title&article[body]=body 62 + # POST api/v1/communites/:community_id/articles?private_token=234298743290432&article[name]=title&article[body]=body
63 post do 63 post do
64 community = environment.communities.find(params[:community_id]) 64 community = environment.communities.find(params[:community_id])
65 return forbidden! unless current_person.can_post_content?(community) 65 return forbidden! unless current_person.can_post_content?(community)
lib/api/v1/communities.rb
@@ -21,6 +21,24 @@ module API @@ -21,6 +21,24 @@ module API
21 present communities, :with => Entities::Community 21 present communities, :with => Entities::Community
22 end 22 end
23 23
  24 +
  25 + # Example Request:
  26 + # POST api/v1/communties?private_token=234298743290432&community[name]=some_name
  27 + post do
  28 + params[:community] ||= {}
  29 + begin
  30 + community = Community.create_after_moderation(current_person, params[:community].merge({:environment => environment}))
  31 + rescue
  32 + community = Community.new(params[:community])
  33 + end
  34 +
  35 + if !community.save
  36 + render_api_errors!(community.errors.full_messages)
  37 + end
  38 +
  39 + present community, :with => Entities::Community
  40 + end
  41 +
24 get ':id' do 42 get ':id' do
25 community = environment.communities.visible.find_by_id(params[:id]) 43 community = environment.communities.visible.find_by_id(params[:id])
26 present community, :with => Entities::Community 44 present community, :with => Entities::Community
lib/api/v1/users.rb
@@ -11,6 +11,19 @@ module API @@ -11,6 +11,19 @@ module API
11 present environment.users, :with => Entities::User 11 present environment.users, :with => Entities::User
12 end 12 end
13 13
  14 + # Example Request:
  15 + # POST api/v1/users?user[login]=some_login&user[password]=some
  16 + post do
  17 + user = User.new(params[:user])
  18 + user.terms_of_use = environment.terms_of_use
  19 + user.environment = environment
  20 + if !user.save
  21 + render_api_errors!(user.errors.full_messages)
  22 + end
  23 +
  24 + present user, :with => Entities::User
  25 + end
  26 +
14 get ":id" do 27 get ":id" do
15 present environment.users.find_by_id(params[:id]), :with => Entities::User 28 present environment.users.find_by_id(params[:id]), :with => Entities::User
16 end 29 end
test/unit/api/communities_test.rb
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper' @@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper'
3 class CommunitiesTest < ActiveSupport::TestCase 3 class CommunitiesTest < ActiveSupport::TestCase
4 4
5 def setup 5 def setup
  6 + Community.delete_all
6 login_api 7 login_api
7 end 8 end
8 9
@@ -42,6 +43,19 @@ class CommunitiesTest &lt; ActiveSupport::TestCase @@ -42,6 +43,19 @@ class CommunitiesTest &lt; ActiveSupport::TestCase
42 assert_equivalent [c1.id, c2.id], json['communities'].map {|c| c['id']} 43 assert_equivalent [c1.id, c2.id], json['communities'].map {|c| c['id']}
43 end 44 end
44 45
  46 + should 'create a community' do
  47 + params[:community] = {:name => 'some'}
  48 + post "/api/v1/communities?#{params.to_query}"
  49 + json = JSON.parse(last_response.body)
  50 + assert_equal 'some', json['community']['name']
  51 + end
  52 +
  53 + should 'return 400 status for invalid community creation' do
  54 + post "/api/v1/communities?#{params.to_query}"
  55 + json = JSON.parse(last_response.body)
  56 + assert_equal 400, last_response.status
  57 + end
  58 +
45 should 'get community' do 59 should 'get community' do
46 community = fast_create(Community) 60 community = fast_create(Community)
47 61
test/unit/api/enterprises_test.rb
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + &#39;/test_helper&#39; @@ -3,6 +3,7 @@ require File.dirname(__FILE__) + &#39;/test_helper&#39;
3 class EnterprisesTest < ActiveSupport::TestCase 3 class EnterprisesTest < ActiveSupport::TestCase
4 4
5 def setup 5 def setup
  6 + Enterprise.delete_all
6 login_api 7 login_api
7 end 8 end
8 9
test/unit/api/people_test.rb
@@ -3,10 +3,10 @@ require File.dirname(__FILE__) + &#39;/test_helper&#39; @@ -3,10 +3,10 @@ require File.dirname(__FILE__) + &#39;/test_helper&#39;
3 class PeopleTest < ActiveSupport::TestCase 3 class PeopleTest < ActiveSupport::TestCase
4 4
5 def setup 5 def setup
  6 + Person.delete_all
6 login_api 7 login_api
7 end 8 end
8 9
9 -  
10 should 'list all people' do 10 should 'list all people' do
11 person1 = fast_create(Person, :public_profile => true) 11 person1 = fast_create(Person, :public_profile => true)
12 person2 = fast_create(Person) 12 person2 = fast_create(Person)
test/unit/api/users_test.rb
@@ -12,13 +12,26 @@ class UsersTest &lt; ActiveSupport::TestCase @@ -12,13 +12,26 @@ class UsersTest &lt; ActiveSupport::TestCase
12 assert_includes json["users"].map { |a| a["login"] }, user.login 12 assert_includes json["users"].map { |a| a["login"] }, user.login
13 end 13 end
14 14
  15 + should 'create a user' do
  16 + params[:user] = {:login => 'some', :password => '123456', :password_confirmation => '123456', :email => 'some@some.com'}
  17 + post "/api/v1/users?#{params.to_query}"
  18 + json = JSON.parse(last_response.body)
  19 + assert_equal 'some', json['user']['login']
  20 + end
  21 +
  22 + should 'return 400 status for invalid user creation' do
  23 + params[:user] = {:login => 'some'}
  24 + post "/api/v1/users?#{params.to_query}"
  25 + json = JSON.parse(last_response.body)
  26 + assert_equal 400, last_response.status
  27 + end
  28 +
15 should 'get user' do 29 should 'get user' do
16 get "/api/v1/users/#{user.id}?#{params.to_query}" 30 get "/api/v1/users/#{user.id}?#{params.to_query}"
17 json = JSON.parse(last_response.body) 31 json = JSON.parse(last_response.body)
18 assert_equal user.id, json['user']['id'] 32 assert_equal user.id, json['user']['id']
19 end 33 end
20 34
21 -  
22 should 'list user permissions' do 35 should 'list user permissions' do
23 community = fast_create(Community) 36 community = fast_create(Community)
24 community.add_admin(person) 37 community.add_admin(person)