1 # frozen_string_literal: true
6 class ChangesetsControllerTest < ActionDispatch::IntegrationTest
8 # test all routes which lead to this controller
11 { :path => "/api/0.6/changeset/1/subscription", :method => :post },
12 { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" }
15 { :path => "/api/0.6/changeset/1/subscription.json", :method => :post },
16 { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" }
19 { :path => "/api/0.6/changeset/1/subscription", :method => :delete },
20 { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" }
23 { :path => "/api/0.6/changeset/1/subscription.json", :method => :delete },
24 { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" }
28 { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" },
29 { :path => "/api/0.6/changeset/1/subscribe", :method => :post }
32 { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" },
33 { :path => "/api/0.6/changeset/1/subscribe.json", :method => :post }
36 { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" },
37 { :path => "/api/0.6/changeset/1/unsubscribe", :method => :post }
40 { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" },
41 { :path => "/api/0.6/changeset/1/unsubscribe.json", :method => :post }
45 def test_create_by_unauthorized
46 changeset = create(:changeset, :closed)
48 assert_no_difference "ChangesetSubscription.count" do
49 assert_no_difference "changeset.subscribers.count" do
50 post api_changeset_subscription_path(changeset)
52 assert_response :unauthorized
57 def test_create_on_missing_changeset
59 auth_header = bearer_authorization_header user
61 assert_no_difference "ChangesetSubscription.count" do
62 post api_changeset_subscription_path(999111), :headers => auth_header
64 assert_response :not_found
68 def test_create_when_subscribed
70 auth_header = bearer_authorization_header user
71 changeset = create(:changeset, :closed)
72 changeset.subscribers << user
74 assert_no_difference "ChangesetSubscription.count" do
75 assert_no_difference "changeset.subscribers.count" do
76 post api_changeset_subscription_path(changeset), :headers => auth_header
78 assert_response :conflict
81 assert_includes changeset.subscribers, user
84 def test_create_on_open_changeset
86 auth_header = bearer_authorization_header user
87 changeset = create(:changeset)
89 assert_difference "ChangesetSubscription.count", 1 do
90 assert_difference "changeset.subscribers.count", 1 do
91 post api_changeset_subscription_path(changeset), :headers => auth_header
93 assert_response :success
96 assert_includes changeset.subscribers, user
99 def test_create_on_closed_changeset
101 auth_header = bearer_authorization_header user
102 changeset = create(:changeset, :closed)
104 assert_difference "ChangesetSubscription.count", 1 do
105 assert_difference "changeset.subscribers.count", 1 do
106 post api_changeset_subscription_path(changeset), :headers => auth_header
108 assert_response :success
111 assert_includes changeset.subscribers, user
114 def test_create_legacy
116 auth_header = bearer_authorization_header user
117 changeset = create(:changeset, :closed)
119 assert_difference "ChangesetSubscription.count", 1 do
120 assert_difference "changeset.subscribers.count", 1 do
121 post "/api/0.6/changeset/#{changeset.id}/subscribe", :headers => auth_header
123 assert_response :success
126 assert_includes changeset.subscribers, user
129 def test_destroy_by_unauthorized
130 changeset = create(:changeset, :closed)
132 assert_no_difference "ChangesetSubscription.count" do
133 assert_no_difference "changeset.subscribers.count" do
134 delete api_changeset_subscription_path(changeset)
136 assert_response :unauthorized
141 def test_destroy_on_missing_changeset
143 auth_header = bearer_authorization_header user
145 assert_no_difference "ChangesetSubscription.count" do
146 delete api_changeset_subscription_path(999111), :headers => auth_header
148 assert_response :not_found
152 def test_destroy_when_not_subscribed
154 auth_header = bearer_authorization_header user
155 changeset = create(:changeset, :closed)
157 assert_no_difference "ChangesetSubscription.count" do
158 assert_no_difference "changeset.subscribers.count" do
159 delete api_changeset_subscription_path(changeset), :headers => auth_header
161 assert_response :not_found
164 assert_not_includes changeset.subscribers, user
167 def test_destroy_on_open_changeset
169 auth_header = bearer_authorization_header user
170 changeset = create(:changeset)
171 changeset.subscribers.push(user)
173 assert_difference "ChangesetSubscription.count", -1 do
174 assert_difference "changeset.subscribers.count", -1 do
175 delete api_changeset_subscription_path(changeset), :headers => auth_header
177 assert_response :success
180 assert_not_includes changeset.subscribers, user
183 def test_destroy_on_closed_changeset
185 auth_header = bearer_authorization_header user
186 changeset = create(:changeset, :closed)
187 changeset.subscribers.push(user)
189 assert_difference "ChangesetSubscription.count", -1 do
190 assert_difference "changeset.subscribers.count", -1 do
191 delete api_changeset_subscription_path(changeset), :headers => auth_header
193 assert_response :success
196 assert_not_includes changeset.subscribers, user
199 def test_destroy_legacy
201 auth_header = bearer_authorization_header user
202 changeset = create(:changeset, :closed)
203 changeset.subscribers.push(user)
205 assert_difference "ChangesetSubscription.count", -1 do
206 assert_difference "changeset.subscribers.count", -1 do
207 post "/api/0.6/changeset/#{changeset.id}/unsubscribe", :headers => auth_header
209 assert_response :success
212 assert_not_includes changeset.subscribers, user