[Git][noosfero/noosfero][master] 10 commits: Fixed environment endpoint returned data

Leandro Nunes gitlab at mg.gitlab.com
Tue Apr 26 14:15:36 BRT 2016


Leandro Nunes pushed to branch master at Noosfero / noosfero


Commits:
aeaecfbd by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Fixed environment endpoint returned data

- - - - -
ee22db70 by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Added description to environment entity

- - - - -
ecb1bf67 by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Added description to environment api test

- - - - -
adeac9bc by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Allowed settings for environments if user is admin

- - - - -
49c773c2 by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Refactored create admin user method

- - - - -
0a8465c6 by Carlos Purificacao at 2016-04-26T10:44:33-03:00
Changed environment api to use present_partial

- - - - -
7b324eb6 by Leandro Nunes dos Santos at 2016-04-26T11:08:12-03:00
refactoring get id method

- - - - -
b1cad3f0 by Leandro Nunes dos Santos at 2016-04-26T11:24:12-03:00
return the old implementation of create_admin_user

- - - - -
f7d88514 by Leandro Nunes dos Santos at 2016-04-26T11:24:59-03:00
refactoring test to set admin user by another way

- - - - -
4492ca9f by Leandro Nunes at 2016-04-26T17:15:22+00:00
Merge branch 'environment-api-refactoring' into 'master'

Environment api refactoring

Fixed environment endpoint data

See merge request !874
- - - - -


4 changed files:

- lib/noosfero/api/entities.rb
- lib/noosfero/api/helpers.rb
- lib/noosfero/api/v1/environments.rb
- test/api/environment_test.rb


Changes:

=====================================
lib/noosfero/api/entities.rb
=====================================
--- a/lib/noosfero/api/entities.rb
+++ b/lib/noosfero/api/entities.rb
@@ -231,6 +231,9 @@ module Noosfero
 
       class Environment < Entity
         expose :name
+        expose :id
+        expose :description
+        expose :settings, if: lambda { |instance, options| options[:is_admin] }
       end
 
       class Tag < Entity


=====================================
lib/noosfero/api/helpers.rb
=====================================
--- a/lib/noosfero/api/helpers.rb
+++ b/lib/noosfero/api/helpers.rb
@@ -30,6 +30,11 @@ require_relative '../../find_by_contents'
         current_user.person unless current_user.nil?
       end
 
+      def is_admin?(environment)
+        return false unless current_user
+        return current_person.is_admin?(environment)
+      end
+
       def logout
         @current_user = nil
       end


=====================================
lib/noosfero/api/v1/environments.rb
=====================================
--- a/lib/noosfero/api/v1/environments.rb
+++ b/lib/noosfero/api/v1/environments.rb
@@ -11,13 +11,15 @@ module Noosfero
           end
 
           get ':id' do
+            local_environment = nil
             if (params[:id] == "default")
-              present Environment.default
+              local_environment = Environment.default
             elsif (params[:id] == "context")
-              present environment
+              local_environment = environment
             else
-              present Environment.find(params[:id])
+              local_environment = Environment.find(params[:id])
             end
+            present_partial local_environment, :with => Entities::Environment, :is_admin => is_admin?(local_environment)
           end
 
         end


=====================================
test/api/environment_test.rb
=====================================
--- a/test/api/environment_test.rb
+++ b/test/api/environment_test.rb
@@ -2,16 +2,45 @@ require_relative 'test_helper'
 
 class EnvironmentTest < ActiveSupport::TestCase
 
-  def setup
-    @person = create_user('testing').person
+  should 'return the default environment' do
+    environment = Environment.default
+    get "/api/v1/environment/default"
+    json = JSON.parse(last_response.body)
+    assert_equal environment.id, json['id']
   end
-  attr_reader :person
 
-  should 'return the default environment' do
+  should 'not return the default environment settings' do
     environment = Environment.default
     get "/api/v1/environment/default"
     json = JSON.parse(last_response.body)
     assert_equal environment.id, json['id']
+    assert_nil json['settings']
+  end
+
+  should 'return the default environment settings for admin' do
+    login_api
+    environment = Environment.default
+    environment.add_admin(person)
+    get "/api/v1/environment/default?#{params.to_query}"
+    json = JSON.parse(last_response.body)
+    assert_equal environment.id, json['id']
+    assert_equal environment.settings, json['settings']
+  end
+
+  should 'not return the default environment settings for non admin users' do
+    login_api
+    environment = Environment.default
+    get "/api/v1/environment/default?#{params.to_query}"
+    json = JSON.parse(last_response.body)
+    assert_equal environment.id, json['id']
+    assert_nil json['settings']
+  end
+
+  should 'return the default environment description' do
+    environment = Environment.default
+    get "/api/v1/environment/default"
+    json = JSON.parse(last_response.body)
+    assert_equal environment.description, json['description']
   end
 
   should 'return created environment' do



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/c8eaed18d85ace70e370e069fec3202c9a151cff...4492ca9fea106282776aca602ae8a7f17871ea87
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160426/1df25b0b/attachment-0001.html>


More information about the Noosfero-dev mailing list