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 def test_create_by_unauthorized
27 changeset = create(:changeset, :closed)
29 assert_no_difference "ChangesetSubscription.count" do
30 assert_no_difference "changeset.subscribers.count" do
31 post api_changeset_subscription_path(changeset)
33 assert_response :unauthorized
38 def test_create_on_missing_changeset
40 auth_header = bearer_authorization_header user
42 assert_no_difference "ChangesetSubscription.count" do
43 post api_changeset_subscription_path(999111), :headers => auth_header
45 assert_response :not_found
49 def test_create_when_subscribed
51 auth_header = bearer_authorization_header user
52 changeset = create(:changeset, :closed)
53 changeset.subscribers << user
55 assert_no_difference "ChangesetSubscription.count" do
56 assert_no_difference "changeset.subscribers.count" do
57 post api_changeset_subscription_path(changeset), :headers => auth_header
59 assert_response :conflict
64 def test_create_on_open_changeset
66 auth_header = bearer_authorization_header user
67 changeset = create(:changeset)
69 assert_difference "ChangesetSubscription.count", 1 do
70 assert_difference "changeset.subscribers.count", 1 do
71 post api_changeset_subscription_path(changeset), :headers => auth_header
73 assert_response :success
78 def test_create_on_closed_changeset
80 auth_header = bearer_authorization_header user
81 changeset = create(:changeset, :closed)
83 assert_difference "ChangesetSubscription.count", 1 do
84 assert_difference "changeset.subscribers.count", 1 do
85 post api_changeset_subscription_path(changeset), :headers => auth_header
87 assert_response :success
92 def test_destroy_by_unauthorized
93 changeset = create(:changeset, :closed)
95 assert_no_difference "ChangesetSubscription.count" do
96 assert_no_difference "changeset.subscribers.count" do
97 delete api_changeset_subscription_path(changeset)
99 assert_response :unauthorized
104 def test_destroy_on_missing_changeset
106 auth_header = bearer_authorization_header user
108 assert_no_difference "ChangesetSubscription.count" do
109 delete api_changeset_subscription_path(999111), :headers => auth_header
111 assert_response :not_found
115 def test_destroy_when_not_subscribed
117 auth_header = bearer_authorization_header user
118 changeset = create(:changeset, :closed)
120 assert_no_difference "ChangesetSubscription.count" do
121 assert_no_difference "changeset.subscribers.count" do
122 delete api_changeset_subscription_path(changeset), :headers => auth_header
124 assert_response :not_found
129 def test_destroy_on_open_changeset
131 auth_header = bearer_authorization_header user
132 changeset = create(:changeset)
133 changeset.subscribers.push(user)
135 assert_difference "ChangesetSubscription.count", -1 do
136 assert_difference "changeset.subscribers.count", -1 do
137 delete api_changeset_subscription_path(changeset), :headers => auth_header
139 assert_response :success
144 def test_destroy_on_closed_changeset
146 auth_header = bearer_authorization_header user
147 changeset = create(:changeset, :closed)
148 changeset.subscribers.push(user)
150 assert_difference "ChangesetSubscription.count", -1 do
151 assert_difference "changeset.subscribers.count", -1 do
152 delete api_changeset_subscription_path(changeset), :headers => auth_header
154 assert_response :success