Commit 247e46d392c82d48f7f6ecbbc8f092ccf3025f10

Authored by Leandro Santos
1 parent 1617e755

refactoring task actions

Showing 2 changed files with 30 additions and 5 deletions   Show diff stats
app/api/v1/tasks.rb
@@ -30,8 +30,7 @@ module Api @@ -30,8 +30,7 @@ module Api
30 %w[finish cancel].each do |action| 30 %w[finish cancel].each do |action|
31 desc "#{action.capitalize} a task" 31 desc "#{action.capitalize} a task"
32 put ":id/#{action}" do 32 put ":id/#{action}" do
33 - authenticate!  
34 - task = find_task(current_person, params[:id]) 33 + task = find_task(current_person, Task.to(current_person), params[:id])
35 task.send(action, current_person) if (task.status == Task::Status::ACTIVE) 34 task.send(action, current_person) if (task.status == Task::Status::ACTIVE)
36 present_partial task, :with => Entities::Task 35 present_partial task, :with => Entities::Task
37 end 36 end
test/api/task_test.rb
@@ -50,7 +50,7 @@ class TasksTest < ActiveSupport::TestCase @@ -50,7 +50,7 @@ class TasksTest < ActiveSupport::TestCase
50 task = create(Task, :requestor => person, :target => environment) 50 task = create(Task, :requestor => person, :target => environment)
51 51
52 get "/api/v1/tasks/#{task.id}?#{params.to_query}" 52 get "/api/v1/tasks/#{task.id}?#{params.to_query}"
53 - assert_equal 403, last_response.status 53 + assert_equal 404, last_response.status
54 end 54 end
55 55
56 should 'find the current user task even it is finished' do 56 should 'find the current user task even it is finished' do
@@ -161,7 +161,6 @@ class TasksTest < ActiveSupport::TestCase @@ -161,7 +161,6 @@ class TasksTest < ActiveSupport::TestCase
161 task_actions_state={"finish"=>"FINISHED","cancel"=>"CANCELLED"} 161 task_actions_state={"finish"=>"FINISHED","cancel"=>"CANCELLED"}
162 task_actions.each do |action| 162 task_actions.each do |action|
163 should "person be able to #{action} his own task" do 163 should "person be able to #{action} his own task" do
164 - login_api  
165 person1 = fast_create(Person) 164 person1 = fast_create(Person)
166 task = create(Task, :requestor => person1, :target => person) 165 task = create(Task, :requestor => person1, :target => person)
167 put "/api/v1/tasks/#{task.id}/#{action}?#{params.to_query}" 166 put "/api/v1/tasks/#{task.id}/#{action}?#{params.to_query}"
@@ -169,8 +168,35 @@ class TasksTest < ActiveSupport::TestCase @@ -169,8 +168,35 @@ class TasksTest < ActiveSupport::TestCase
169 assert_equal "Task::Status::#{task_actions_state[action]}".constantize, task.reload.status 168 assert_equal "Task::Status::#{task_actions_state[action]}".constantize, task.reload.status
170 end 169 end
171 170
  171 + should "person be able to #{action} environment task if it's admin user" do
  172 + environment = Environment.default
  173 + environment.add_admin(person)
  174 + task = create(Task, :requestor => person, :target => environment)
  175 + put "/api/v1/tasks/#{task.id}/#{action}?#{params.to_query}"
  176 + assert_equal person.reload.id, task.reload.closed_by_id
  177 + assert_equal "Task::Status::#{task_actions_state[action]}".constantize, task.reload.status
  178 + end
  179 +
  180 + should "person be able to #{action} community task if it has permission on it" do
  181 + community = fast_create(Community)
  182 + community.add_member(person)
  183 + give_permission(person, 'perform_task', community)
  184 + task = create(Task, :requestor => person, :target => community)
  185 + put "/api/v1/tasks/#{task.id}/#{action}?#{params.to_query}"
  186 + assert_equal person.reload.id, task.reload.closed_by_id
  187 + assert_equal "Task::Status::#{task_actions_state[action]}".constantize, task.reload.status
  188 + end
  189 +
  190 + should "person not be able to #{action} community task if it has no permission on it" do
  191 + community = fast_create(Community)
  192 + community.add_member(person)
  193 + task = create(Task, :requestor => person, :target => community)
  194 + put "/api/v1/tasks/#{task.id}/#{action}?#{params.to_query}"
  195 + assert_equal person.reload.id, task.reload.closed_by_id
  196 + assert_equal "Task::Status::#{task_actions_state[action]}".constantize, task.reload.status
  197 + end
  198 +
172 should "person not be able to #{action} other person's task" do 199 should "person not be able to #{action} other person's task" do
173 - login_api  
174 user = fast_create(User) 200 user = fast_create(User)
175 person1 = fast_create(Person, :user_id => user) 201 person1 = fast_create(Person, :user_id => user)
176 task = create(Task, :requestor => person, :target => person1) 202 task = create(Task, :requestor => person, :target => person1)