4   class ChangesetsControllerTest < ActionDispatch::IntegrationTest
 
   6     # test all routes which lead to this controller
 
   9         { :path => "/api/0.6/changeset/1/subscription", :method => :post },
 
  10         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" }
 
  13         { :path => "/api/0.6/changeset/1/subscription.json", :method => :post },
 
  14         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" }
 
  17         { :path => "/api/0.6/changeset/1/subscription", :method => :delete },
 
  18         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" }
 
  21         { :path => "/api/0.6/changeset/1/subscription.json", :method => :delete },
 
  22         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" }
 
  26         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" },
 
  27         { :path => "/api/0.6/changeset/1/subscribe", :method => :post }
 
  30         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" },
 
  31         { :path => "/api/0.6/changeset/1/subscribe.json", :method => :post }
 
  34         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" },
 
  35         { :path => "/api/0.6/changeset/1/unsubscribe", :method => :post }
 
  38         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" },
 
  39         { :path => "/api/0.6/changeset/1/unsubscribe.json", :method => :post }
 
  43     def test_create_by_unauthorized
 
  44       changeset = create(:changeset, :closed)
 
  46       assert_no_difference "ChangesetSubscription.count" do
 
  47         assert_no_difference "changeset.subscribers.count" do
 
  48           post api_changeset_subscription_path(changeset)
 
  50           assert_response :unauthorized
 
  55     def test_create_on_missing_changeset
 
  57       auth_header = bearer_authorization_header user
 
  59       assert_no_difference "ChangesetSubscription.count" do
 
  60         post api_changeset_subscription_path(999111), :headers => auth_header
 
  62         assert_response :not_found
 
  66     def test_create_when_subscribed
 
  68       auth_header = bearer_authorization_header user
 
  69       changeset = create(:changeset, :closed)
 
  70       changeset.subscribers << user
 
  72       assert_no_difference "ChangesetSubscription.count" do
 
  73         assert_no_difference "changeset.subscribers.count" do
 
  74           post api_changeset_subscription_path(changeset), :headers => auth_header
 
  76           assert_response :conflict
 
  79       assert_includes changeset.subscribers, user
 
  82     def test_create_on_open_changeset
 
  84       auth_header = bearer_authorization_header user
 
  85       changeset = create(:changeset)
 
  87       assert_difference "ChangesetSubscription.count", 1 do
 
  88         assert_difference "changeset.subscribers.count", 1 do
 
  89           post api_changeset_subscription_path(changeset), :headers => auth_header
 
  91           assert_response :success
 
  94       assert_includes changeset.subscribers, user
 
  97     def test_create_on_closed_changeset
 
  99       auth_header = bearer_authorization_header user
 
 100       changeset = create(:changeset, :closed)
 
 102       assert_difference "ChangesetSubscription.count", 1 do
 
 103         assert_difference "changeset.subscribers.count", 1 do
 
 104           post api_changeset_subscription_path(changeset), :headers => auth_header
 
 106           assert_response :success
 
 109       assert_includes changeset.subscribers, user
 
 112     def test_create_legacy
 
 114       auth_header = bearer_authorization_header user
 
 115       changeset = create(:changeset, :closed)
 
 117       assert_difference "ChangesetSubscription.count", 1 do
 
 118         assert_difference "changeset.subscribers.count", 1 do
 
 119           post "/api/0.6/changeset/#{changeset.id}/subscribe", :headers => auth_header
 
 121           assert_response :success
 
 124       assert_includes changeset.subscribers, user
 
 127     def test_destroy_by_unauthorized
 
 128       changeset = create(:changeset, :closed)
 
 130       assert_no_difference "ChangesetSubscription.count" do
 
 131         assert_no_difference "changeset.subscribers.count" do
 
 132           delete api_changeset_subscription_path(changeset)
 
 134           assert_response :unauthorized
 
 139     def test_destroy_on_missing_changeset
 
 141       auth_header = bearer_authorization_header user
 
 143       assert_no_difference "ChangesetSubscription.count" do
 
 144         delete api_changeset_subscription_path(999111), :headers => auth_header
 
 146         assert_response :not_found
 
 150     def test_destroy_when_not_subscribed
 
 152       auth_header = bearer_authorization_header user
 
 153       changeset = create(:changeset, :closed)
 
 155       assert_no_difference "ChangesetSubscription.count" do
 
 156         assert_no_difference "changeset.subscribers.count" do
 
 157           delete api_changeset_subscription_path(changeset), :headers => auth_header
 
 159           assert_response :not_found
 
 162       assert_not_includes changeset.subscribers, user
 
 165     def test_destroy_on_open_changeset
 
 167       auth_header = bearer_authorization_header user
 
 168       changeset = create(:changeset)
 
 169       changeset.subscribers.push(user)
 
 171       assert_difference "ChangesetSubscription.count", -1 do
 
 172         assert_difference "changeset.subscribers.count", -1 do
 
 173           delete api_changeset_subscription_path(changeset), :headers => auth_header
 
 175           assert_response :success
 
 178       assert_not_includes changeset.subscribers, user
 
 181     def test_destroy_on_closed_changeset
 
 183       auth_header = bearer_authorization_header user
 
 184       changeset = create(:changeset, :closed)
 
 185       changeset.subscribers.push(user)
 
 187       assert_difference "ChangesetSubscription.count", -1 do
 
 188         assert_difference "changeset.subscribers.count", -1 do
 
 189           delete api_changeset_subscription_path(changeset), :headers => auth_header
 
 191           assert_response :success
 
 194       assert_not_includes changeset.subscribers, user
 
 197     def test_destroy_legacy
 
 199       auth_header = bearer_authorization_header user
 
 200       changeset = create(:changeset, :closed)
 
 201       changeset.subscribers.push(user)
 
 203       assert_difference "ChangesetSubscription.count", -1 do
 
 204         assert_difference "changeset.subscribers.count", -1 do
 
 205           post "/api/0.6/changeset/#{changeset.id}/unsubscribe", :headers => auth_header
 
 207           assert_response :success
 
 210       assert_not_includes changeset.subscribers, user