]> git.openstreetmap.org Git - rails.git/blob - test/controllers/api/changesets/closes_controller_test.rb
Split api changeset close tests for missing changesets
[rails.git] / test / controllers / api / changesets / closes_controller_test.rb
1 require "test_helper"
2
3 module Api
4   module Changesets
5     class ClosesControllerTest < ActionDispatch::IntegrationTest
6       ##
7       # test all routes which lead to this controller
8       def test_routes
9         assert_routing(
10           { :path => "/api/0.6/changeset/1/close", :method => :put },
11           { :controller => "api/changesets/closes", :action => "update", :changeset_id => "1" }
12         )
13
14         assert_raises(ActionController::UrlGenerationError) do
15           put api_changeset_close_path(-132)
16         end
17       end
18
19       def test_update_missing_changeset_when_unauthorized
20         put api_changeset_close_path(999111)
21
22         assert_response :unauthorized
23       end
24
25       def test_update_missing_changeset_by_regular_user
26         auth_header = bearer_authorization_header
27
28         put api_changeset_close_path(999111), :headers => auth_header
29
30         assert_response :not_found
31       end
32
33       def test_update_when_unauthorized
34         changeset = create(:changeset)
35
36         put api_changeset_close_path(changeset)
37
38         assert_response :unauthorized
39         assert_predicate changeset.reload, :open?
40       end
41
42       def test_update_by_private_user
43         user = create(:user, :data_public => false)
44         changeset = create(:changeset, :user => user)
45         auth_header = bearer_authorization_header user
46
47         put api_changeset_close_path(changeset), :headers => auth_header
48
49         assert_require_public_data
50         assert_predicate changeset.reload, :open?
51       end
52
53       def test_update_by_changeset_non_creator
54         user = create(:user)
55         changeset = create(:changeset)
56         auth_header = bearer_authorization_header user
57
58         put api_changeset_close_path(changeset), :headers => auth_header
59
60         assert_response :conflict
61         assert_equal "The user doesn't own that changeset", @response.body
62         assert_predicate changeset.reload, :open?
63       end
64
65       def test_update_by_changeset_creator
66         user = create(:user)
67         changeset = create(:changeset, :user => user)
68         auth_header = bearer_authorization_header user
69
70         put api_changeset_close_path(changeset), :headers => auth_header
71
72         assert_response :success
73         assert_not_predicate changeset.reload, :open?
74       end
75
76       ##
77       # test that you can't close using another method
78       def test_update_method_invalid
79         user = create(:user)
80         changeset = create(:changeset, :user => user)
81
82         auth_header = bearer_authorization_header user
83
84         get api_changeset_close_path(changeset), :headers => auth_header
85         assert_response :not_found
86         assert_template "rescues/routing_error"
87
88         post api_changeset_close_path(changeset), :headers => auth_header
89         assert_response :not_found
90         assert_template "rescues/routing_error"
91       end
92     end
93   end
94 end