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