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" }
15 def test_update_when_unauthorized
16 changeset = create(:changeset)
18 put api_changeset_close_path(changeset)
20 assert_response :unauthorized
21 assert_predicate changeset.reload, :open?
24 def test_update_by_private_user
25 user = create(:user, :data_public => false)
26 changeset = create(:changeset, :user => user)
27 auth_header = bearer_authorization_header user
29 put api_changeset_close_path(changeset), :headers => auth_header
31 assert_require_public_data
32 assert_predicate changeset.reload, :open?
35 def test_update_by_changeset_non_creator
37 changeset = create(:changeset)
38 auth_header = bearer_authorization_header user
40 put api_changeset_close_path(changeset), :headers => auth_header
42 assert_response :conflict
43 assert_equal "The user doesn't own that changeset", @response.body
44 assert_predicate changeset.reload, :open?
47 def test_update_by_changeset_creator
49 changeset = create(:changeset, :user => user)
50 auth_header = bearer_authorization_header user
52 put api_changeset_close_path(changeset), :headers => auth_header
54 assert_response :success
55 assert_not_predicate changeset.reload, :open?
59 # test that you can't close using another method
60 def test_update_method_invalid
62 changeset = create(:changeset, :user => user)
64 auth_header = bearer_authorization_header user
66 get api_changeset_close_path(changeset), :headers => auth_header
67 assert_response :not_found
68 assert_template "rescues/routing_error"
70 post api_changeset_close_path(changeset), :headers => auth_header
71 assert_response :not_found
72 assert_template "rescues/routing_error"
76 # check that you can't close a changeset that isn't found
77 def test_update_not_found
78 cs_ids = [0, -132, "123"]
80 # First try to do it with no auth
82 put api_changeset_close_path(id)
83 assert_response :unauthorized, "Shouldn't be able close the non-existant changeset #{id}, when not authorized"
84 rescue ActionController::UrlGenerationError => e
85 assert_match(/No route matches/, e.to_s)
89 auth_header = bearer_authorization_header
91 put api_changeset_close_path(id), :headers => auth_header
92 assert_response :not_found, "The changeset #{id} doesn't exist, so can't be closed"
93 rescue ActionController::UrlGenerationError => e
94 assert_match(/No route matches/, e.to_s)