142 lines
4.6 KiB
Ruby
142 lines
4.6 KiB
Ruby
require "test_helper"
|
|
|
|
module Api
|
|
class NoteSubscriptionsControllerTest < ActionDispatch::IntegrationTest
|
|
def test_routes
|
|
assert_routing(
|
|
{ :path => "/api/0.6/notes/1/subscription", :method => :post },
|
|
{ :controller => "api/note_subscriptions", :action => "create", :note_id => "1" }
|
|
)
|
|
assert_routing(
|
|
{ :path => "/api/0.6/notes/1/subscription", :method => :delete },
|
|
{ :controller => "api/note_subscriptions", :action => "destroy", :note_id => "1" }
|
|
)
|
|
end
|
|
|
|
def test_create
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
note = create(:note_with_comments)
|
|
assert_empty note.subscribers
|
|
|
|
assert_difference "NoteSubscription.count", 1 do
|
|
assert_difference "note.subscribers.count", 1 do
|
|
post api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :success
|
|
end
|
|
end
|
|
assert_equal user, note.subscribers.last
|
|
end
|
|
|
|
def test_create_fail_anonymous
|
|
note = create(:note_with_comments)
|
|
|
|
assert_no_difference "NoteSubscription.count" do
|
|
assert_no_difference "note.subscribers.count" do
|
|
post api_note_subscription_path(note)
|
|
assert_response :unauthorized
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_create_fail_no_scope
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
|
|
note = create(:note_with_comments)
|
|
|
|
assert_no_difference "NoteSubscription.count" do
|
|
assert_no_difference "note.subscribers.count" do
|
|
post api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :forbidden
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_create_fail_note_not_found
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
|
|
assert_no_difference "NoteSubscription.count" do
|
|
post api_note_subscription_path(999111), :headers => auth_header
|
|
assert_response :not_found
|
|
end
|
|
assert_match "not found", @response.body
|
|
end
|
|
|
|
def test_create_fail_already_subscribed
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
note = create(:note_with_comments)
|
|
create(:note_subscription, :user => user, :note => note)
|
|
|
|
assert_no_difference "NoteSubscription.count" do
|
|
assert_no_difference "note.subscribers.count" do
|
|
post api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :conflict
|
|
end
|
|
end
|
|
assert_match "already subscribed", @response.body
|
|
end
|
|
|
|
def test_destroy
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
other_user = create(:user)
|
|
note = create(:note_with_comments)
|
|
other_note = create(:note_with_comments)
|
|
create(:note_subscription, :user => user, :note => note)
|
|
create(:note_subscription, :user => other_user, :note => note)
|
|
create(:note_subscription, :user => user, :note => other_note)
|
|
|
|
assert_difference "NoteSubscription.count", -1 do
|
|
assert_difference "note.subscribers.count", -1 do
|
|
delete api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :success
|
|
end
|
|
end
|
|
note.reload
|
|
assert_equal [other_user], note.subscribers
|
|
assert_equal [user], other_note.subscribers
|
|
end
|
|
|
|
def test_destroy_fail_anonymous
|
|
note = create(:note_with_comments)
|
|
|
|
delete api_note_subscription_path(note)
|
|
assert_response :unauthorized
|
|
end
|
|
|
|
def test_destroy_fail_no_scope
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
|
|
note = create(:note_with_comments)
|
|
create(:note_subscription, :user => user, :note => note)
|
|
|
|
assert_no_difference "NoteSubscription.count" do
|
|
assert_no_difference "note.subscribers.count" do
|
|
delete api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :forbidden
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_destroy_fail_note_not_found
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
|
|
delete api_note_subscription_path(999111), :headers => auth_header
|
|
assert_response :not_found
|
|
assert_match "not found", @response.body
|
|
end
|
|
|
|
def test_destroy_fail_not_subscribed
|
|
user = create(:user)
|
|
auth_header = bearer_authorization_header user
|
|
note = create(:note_with_comments)
|
|
|
|
delete api_note_subscription_path(note), :headers => auth_header
|
|
assert_response :not_found
|
|
assert_match "not subscribed", @response.body
|
|
end
|
|
end
|
|
end
|