From addf3a3360316be58ac416e7bf63bb591c6e03d6 Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Tue, 24 Mar 2015 19:44:04 -0300 Subject: [PATCH] api: adding method for user and community creation --- lib/api/v1/articles.rb | 2 +- lib/api/v1/communities.rb | 18 ++++++++++++++++++ lib/api/v1/users.rb | 13 +++++++++++++ test/unit/api/communities_test.rb | 14 ++++++++++++++ test/unit/api/enterprises_test.rb | 1 + test/unit/api/people_test.rb | 2 +- test/unit/api/users_test.rb | 15 ++++++++++++++- 7 files changed, 62 insertions(+), 3 deletions(-) diff --git a/lib/api/v1/articles.rb b/lib/api/v1/articles.rb index 566e011..4ae5411 100644 --- a/lib/api/v1/articles.rb +++ b/lib/api/v1/articles.rb @@ -59,7 +59,7 @@ module API end # Example Request: - # POST api/v1/communites/:community_id/articles?private_toke=234298743290432&article[name]=title&article[body]=body + # POST api/v1/communites/:community_id/articles?private_token=234298743290432&article[name]=title&article[body]=body post do community = environment.communities.find(params[:community_id]) return forbidden! unless current_person.can_post_content?(community) diff --git a/lib/api/v1/communities.rb b/lib/api/v1/communities.rb index c18f10d..17f11bd 100644 --- a/lib/api/v1/communities.rb +++ b/lib/api/v1/communities.rb @@ -21,6 +21,24 @@ module API present communities, :with => Entities::Community end + + # Example Request: + # POST api/v1/communties?private_token=234298743290432&community[name]=some_name + post do + params[:community] ||= {} + begin + community = Community.create_after_moderation(current_person, params[:community].merge({:environment => environment})) + rescue + community = Community.new(params[:community]) + end + + if !community.save + render_api_errors!(community.errors.full_messages) + end + + present community, :with => Entities::Community + end + get ':id' do community = environment.communities.visible.find_by_id(params[:id]) present community, :with => Entities::Community diff --git a/lib/api/v1/users.rb b/lib/api/v1/users.rb index 5e85720..69fe2e2 100644 --- a/lib/api/v1/users.rb +++ b/lib/api/v1/users.rb @@ -11,6 +11,19 @@ module API present environment.users, :with => Entities::User end + # Example Request: + # POST api/v1/users?user[login]=some_login&user[password]=some + post do + user = User.new(params[:user]) + user.terms_of_use = environment.terms_of_use + user.environment = environment + if !user.save + render_api_errors!(user.errors.full_messages) + end + + present user, :with => Entities::User + end + get ":id" do present environment.users.find_by_id(params[:id]), :with => Entities::User end diff --git a/test/unit/api/communities_test.rb b/test/unit/api/communities_test.rb index 9df220c..1bdd9b0 100644 --- a/test/unit/api/communities_test.rb +++ b/test/unit/api/communities_test.rb @@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper' class CommunitiesTest < ActiveSupport::TestCase def setup + Community.delete_all login_api end @@ -42,6 +43,19 @@ class CommunitiesTest < ActiveSupport::TestCase assert_equivalent [c1.id, c2.id], json['communities'].map {|c| c['id']} end + should 'create a community' do + params[:community] = {:name => 'some'} + post "/api/v1/communities?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal 'some', json['community']['name'] + end + + should 'return 400 status for invalid community creation' do + post "/api/v1/communities?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal 400, last_response.status + end + should 'get community' do community = fast_create(Community) diff --git a/test/unit/api/enterprises_test.rb b/test/unit/api/enterprises_test.rb index 0b1f21f..f90c968 100644 --- a/test/unit/api/enterprises_test.rb +++ b/test/unit/api/enterprises_test.rb @@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper' class EnterprisesTest < ActiveSupport::TestCase def setup + Enterprise.delete_all login_api end diff --git a/test/unit/api/people_test.rb b/test/unit/api/people_test.rb index 53ab072..c9199d1 100644 --- a/test/unit/api/people_test.rb +++ b/test/unit/api/people_test.rb @@ -3,10 +3,10 @@ require File.dirname(__FILE__) + '/test_helper' class PeopleTest < ActiveSupport::TestCase def setup + Person.delete_all login_api end - should 'list all people' do person1 = fast_create(Person, :public_profile => true) person2 = fast_create(Person) diff --git a/test/unit/api/users_test.rb b/test/unit/api/users_test.rb index 9ff75e5..0998938 100644 --- a/test/unit/api/users_test.rb +++ b/test/unit/api/users_test.rb @@ -12,13 +12,26 @@ class UsersTest < ActiveSupport::TestCase assert_includes json["users"].map { |a| a["login"] }, user.login end + should 'create a user' do + params[:user] = {:login => 'some', :password => '123456', :password_confirmation => '123456', :email => 'some@some.com'} + post "/api/v1/users?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal 'some', json['user']['login'] + end + + should 'return 400 status for invalid user creation' do + params[:user] = {:login => 'some'} + post "/api/v1/users?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal 400, last_response.status + end + should 'get user' do get "/api/v1/users/#{user.id}?#{params.to_query}" json = JSON.parse(last_response.body) assert_equal user.id, json['user']['id'] end - should 'list user permissions' do community = fast_create(Community) community.add_admin(person) -- libgit2 0.21.2