X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/1ffc19192e089c4e75d9db7889d08cd67c1322db..e2e61692ea04fc156221082aeddc21ea18facdec:/test/controllers/api/changeset_subscriptions_controller_test.rb diff --git a/test/controllers/api/changeset_subscriptions_controller_test.rb b/test/controllers/api/changeset_subscriptions_controller_test.rb index f4c3836e6..bf3588f23 100644 --- a/test/controllers/api/changeset_subscriptions_controller_test.rb +++ b/test/controllers/api/changeset_subscriptions_controller_test.rb @@ -21,95 +21,193 @@ module Api { :path => "/api/0.6/changeset/1/subscription.json", :method => :delete }, { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" } ) + + assert_recognizes( + { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" }, + { :path => "/api/0.6/changeset/1/subscribe", :method => :post } + ) + assert_recognizes( + { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" }, + { :path => "/api/0.6/changeset/1/subscribe.json", :method => :post } + ) + assert_recognizes( + { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" }, + { :path => "/api/0.6/changeset/1/unsubscribe", :method => :post } + ) + assert_recognizes( + { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" }, + { :path => "/api/0.6/changeset/1/unsubscribe.json", :method => :post } + ) end - def test_create_success - auth_header = bearer_authorization_header + def test_create_by_unauthorized changeset = create(:changeset, :closed) - assert_difference "changeset.subscribers.count", 1 do - post api_changeset_subscription_path(changeset), :headers => auth_header + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + post api_changeset_subscription_path(changeset) + + assert_response :unauthorized + end end - assert_response :success + end - # not closed changeset - changeset = create(:changeset) - assert_difference "changeset.subscribers.count", 1 do - post api_changeset_subscription_path(changeset), :headers => auth_header + def test_create_on_missing_changeset + user = create(:user) + auth_header = bearer_authorization_header user + + assert_no_difference "ChangesetSubscription.count" do + post api_changeset_subscription_path(999111), :headers => auth_header + + assert_response :not_found end - assert_response :success end - def test_create_fail + def test_create_when_subscribed user = create(:user) + auth_header = bearer_authorization_header user + changeset = create(:changeset, :closed) + changeset.subscribers << user - # unauthorized + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :conflict + end + end + assert_includes changeset.subscribers, user + end + + def test_create_on_open_changeset + user = create(:user) + auth_header = bearer_authorization_header user + changeset = create(:changeset) + + assert_difference "ChangesetSubscription.count", 1 do + assert_difference "changeset.subscribers.count", 1 do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end + end + assert_includes changeset.subscribers, user + end + + def test_create_on_closed_changeset + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(changeset) + + assert_difference "ChangesetSubscription.count", 1 do + assert_difference "changeset.subscribers.count", 1 do + post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :unauthorized + assert_includes changeset.subscribers, user + end + def test_create_legacy + user = create(:user) auth_header = bearer_authorization_header user + changeset = create(:changeset, :closed) - # bad changeset id - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(999111), :headers => auth_header + assert_difference "ChangesetSubscription.count", 1 do + assert_difference "changeset.subscribers.count", 1 do + post "/api/0.6/changeset/#{changeset.id}/subscribe", :headers => auth_header + + assert_response :success + end end - assert_response :not_found + assert_includes changeset.subscribers, user + end - # trying to subscribe when already subscribed + def test_destroy_by_unauthorized changeset = create(:changeset, :closed) - changeset.subscribers.push(user) - assert_no_difference "changeset.subscribers.count" do - post api_changeset_subscription_path(changeset), :headers => auth_header + + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + delete api_changeset_subscription_path(changeset) + + assert_response :unauthorized + end + end + end + + def test_destroy_on_missing_changeset + user = create(:user) + auth_header = bearer_authorization_header user + + assert_no_difference "ChangesetSubscription.count" do + delete api_changeset_subscription_path(999111), :headers => auth_header + + assert_response :not_found end - assert_response :conflict end - def test_destroy_success + def test_destroy_when_not_subscribed user = create(:user) auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - changeset.subscribers.push(user) - assert_difference "changeset.subscribers.count", -1 do - delete api_changeset_subscription_path(changeset), :headers => auth_header + assert_no_difference "ChangesetSubscription.count" do + assert_no_difference "changeset.subscribers.count" do + delete api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :not_found + end end - assert_response :success + assert_not_includes changeset.subscribers, user + end - # not closed changeset + def test_destroy_on_open_changeset + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset) changeset.subscribers.push(user) - assert_difference "changeset.subscribers.count", -1 do - delete api_changeset_subscription_path(changeset), :headers => auth_header + assert_difference "ChangesetSubscription.count", -1 do + assert_difference "changeset.subscribers.count", -1 do + delete api_changeset_subscription_path(changeset), :headers => auth_header + + assert_response :success + end end - assert_response :success + assert_not_includes changeset.subscribers, user end - def test_destroy_fail - # unauthorized + def test_destroy_on_closed_changeset + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(changeset) - end - assert_response :unauthorized + changeset.subscribers.push(user) - auth_header = bearer_authorization_header + assert_difference "ChangesetSubscription.count", -1 do + assert_difference "changeset.subscribers.count", -1 do + delete api_changeset_subscription_path(changeset), :headers => auth_header - # bad changeset id - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(999111), :headers => auth_header + assert_response :success + end end - assert_response :not_found + assert_not_includes changeset.subscribers, user + end - # trying to unsubscribe when not subscribed + def test_destroy_legacy + user = create(:user) + auth_header = bearer_authorization_header user changeset = create(:changeset, :closed) - assert_no_difference "changeset.subscribers.count" do - delete api_changeset_subscription_path(changeset), :headers => auth_header + changeset.subscribers.push(user) + + assert_difference "ChangesetSubscription.count", -1 do + assert_difference "changeset.subscribers.count", -1 do + post "/api/0.6/changeset/#{changeset.id}/unsubscribe", :headers => auth_header + + assert_response :success + end end - assert_response :not_found + assert_not_includes changeset.subscribers, user end end end