]> git.openstreetmap.org Git - rails.git/blob - test/controllers/api/changeset_subscriptions_controller_test.rb
Add frozen_string_literal comments to ruby files
[rails.git] / test / controllers / api / changeset_subscriptions_controller_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 module Api
6   class ChangesetsControllerTest < ActionDispatch::IntegrationTest
7     ##
8     # test all routes which lead to this controller
9     def test_routes
10       assert_routing(
11         { :path => "/api/0.6/changeset/1/subscription", :method => :post },
12         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" }
13       )
14       assert_routing(
15         { :path => "/api/0.6/changeset/1/subscription.json", :method => :post },
16         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" }
17       )
18       assert_routing(
19         { :path => "/api/0.6/changeset/1/subscription", :method => :delete },
20         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" }
21       )
22       assert_routing(
23         { :path => "/api/0.6/changeset/1/subscription.json", :method => :delete },
24         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" }
25       )
26
27       assert_recognizes(
28         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" },
29         { :path => "/api/0.6/changeset/1/subscribe", :method => :post }
30       )
31       assert_recognizes(
32         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" },
33         { :path => "/api/0.6/changeset/1/subscribe.json", :method => :post }
34       )
35       assert_recognizes(
36         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" },
37         { :path => "/api/0.6/changeset/1/unsubscribe", :method => :post }
38       )
39       assert_recognizes(
40         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" },
41         { :path => "/api/0.6/changeset/1/unsubscribe.json", :method => :post }
42       )
43     end
44
45     def test_create_by_unauthorized
46       changeset = create(:changeset, :closed)
47
48       assert_no_difference "ChangesetSubscription.count" do
49         assert_no_difference "changeset.subscribers.count" do
50           post api_changeset_subscription_path(changeset)
51
52           assert_response :unauthorized
53         end
54       end
55     end
56
57     def test_create_on_missing_changeset
58       user = create(:user)
59       auth_header = bearer_authorization_header user
60
61       assert_no_difference "ChangesetSubscription.count" do
62         post api_changeset_subscription_path(999111), :headers => auth_header
63
64         assert_response :not_found
65       end
66     end
67
68     def test_create_when_subscribed
69       user = create(:user)
70       auth_header = bearer_authorization_header user
71       changeset = create(:changeset, :closed)
72       changeset.subscribers << user
73
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
77
78           assert_response :conflict
79         end
80       end
81       assert_includes changeset.subscribers, user
82     end
83
84     def test_create_on_open_changeset
85       user = create(:user)
86       auth_header = bearer_authorization_header user
87       changeset = create(:changeset)
88
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
92
93           assert_response :success
94         end
95       end
96       assert_includes changeset.subscribers, user
97     end
98
99     def test_create_on_closed_changeset
100       user = create(:user)
101       auth_header = bearer_authorization_header user
102       changeset = create(:changeset, :closed)
103
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
107
108           assert_response :success
109         end
110       end
111       assert_includes changeset.subscribers, user
112     end
113
114     def test_create_legacy
115       user = create(:user)
116       auth_header = bearer_authorization_header user
117       changeset = create(:changeset, :closed)
118
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
122
123           assert_response :success
124         end
125       end
126       assert_includes changeset.subscribers, user
127     end
128
129     def test_destroy_by_unauthorized
130       changeset = create(:changeset, :closed)
131
132       assert_no_difference "ChangesetSubscription.count" do
133         assert_no_difference "changeset.subscribers.count" do
134           delete api_changeset_subscription_path(changeset)
135
136           assert_response :unauthorized
137         end
138       end
139     end
140
141     def test_destroy_on_missing_changeset
142       user = create(:user)
143       auth_header = bearer_authorization_header user
144
145       assert_no_difference "ChangesetSubscription.count" do
146         delete api_changeset_subscription_path(999111), :headers => auth_header
147
148         assert_response :not_found
149       end
150     end
151
152     def test_destroy_when_not_subscribed
153       user = create(:user)
154       auth_header = bearer_authorization_header user
155       changeset = create(:changeset, :closed)
156
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
160
161           assert_response :not_found
162         end
163       end
164       assert_not_includes changeset.subscribers, user
165     end
166
167     def test_destroy_on_open_changeset
168       user = create(:user)
169       auth_header = bearer_authorization_header user
170       changeset = create(:changeset)
171       changeset.subscribers.push(user)
172
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
176
177           assert_response :success
178         end
179       end
180       assert_not_includes changeset.subscribers, user
181     end
182
183     def test_destroy_on_closed_changeset
184       user = create(:user)
185       auth_header = bearer_authorization_header user
186       changeset = create(:changeset, :closed)
187       changeset.subscribers.push(user)
188
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
192
193           assert_response :success
194         end
195       end
196       assert_not_includes changeset.subscribers, user
197     end
198
199     def test_destroy_legacy
200       user = create(:user)
201       auth_header = bearer_authorization_header user
202       changeset = create(:changeset, :closed)
203       changeset.subscribers.push(user)
204
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
208
209           assert_response :success
210         end
211       end
212       assert_not_includes changeset.subscribers, user
213     end
214   end
215 end