5 class ClosesControllerTest < ActionDispatch::IntegrationTest
7 # test all routes which lead to this controller
10 { :path => "/api/0.6/changeset/1/close", :method => :put },
11 { :controller => "api/changesets/closes", :action => "update", :changeset_id => "1" }
14 assert_raises(ActionController::UrlGenerationError) do
15 put api_changeset_close_path(-132)
19 def test_update_when_unauthorized
20 changeset = create(:changeset)
22 put api_changeset_close_path(changeset)
24 assert_response :unauthorized
25 assert_predicate changeset.reload, :open?
28 def test_update_by_private_user
29 user = create(:user, :data_public => false)
30 changeset = create(:changeset, :user => user)
31 auth_header = bearer_authorization_header user
33 put api_changeset_close_path(changeset), :headers => auth_header
35 assert_require_public_data
36 assert_predicate changeset.reload, :open?
39 def test_update_by_changeset_non_creator
41 changeset = create(:changeset)
42 auth_header = bearer_authorization_header user
44 put api_changeset_close_path(changeset), :headers => auth_header
46 assert_response :conflict
47 assert_equal "The user doesn't own that changeset", @response.body
48 assert_predicate changeset.reload, :open?
51 def test_update_by_changeset_creator
53 changeset = create(:changeset, :user => user)
54 auth_header = bearer_authorization_header user
56 put api_changeset_close_path(changeset), :headers => auth_header
58 assert_response :success
59 assert_not_predicate changeset.reload, :open?
63 # test that you can't close using another method
64 def test_update_method_invalid
66 changeset = create(:changeset, :user => user)
68 auth_header = bearer_authorization_header user
70 get api_changeset_close_path(changeset), :headers => auth_header
71 assert_response :not_found
72 assert_template "rescues/routing_error"
74 post api_changeset_close_path(changeset), :headers => auth_header
75 assert_response :not_found
76 assert_template "rescues/routing_error"
80 # check that you can't close a changeset that isn't found
81 def test_update_not_found
84 # First try to do it with no auth
86 put api_changeset_close_path(id)
87 assert_response :unauthorized, "Shouldn't be able close the non-existant changeset #{id}, when not authorized"
91 auth_header = bearer_authorization_header
93 put api_changeset_close_path(id), :headers => auth_header
94 assert_response :not_found, "The changeset #{id} doesn't exist, so can't be closed"