X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/b00b156ef46a8fb9ae62bd924de7d7c959963847..36592f72bca5e5670c01c2d259c3139e6eae54ad:/test/controllers/message_controller_test.rb diff --git a/test/controllers/message_controller_test.rb b/test/controllers/message_controller_test.rb index 44271f5dd..1d8416880 100644 --- a/test/controllers/message_controller_test.rb +++ b/test/controllers/message_controller_test.rb @@ -134,6 +134,27 @@ class MessageControllerTest < ActionController::TestCase assert_select "h1", "The user non_existent_user does not exist" end + ## + # test the new action message limit + def test_new_limit + # Login as a normal user + session[:user] = users(:normal_user).id + + # Check that sending a message fails when the message limit is hit + assert_no_difference "ActionMailer::Base.deliveries.size" do + assert_no_difference "Message.count" do + with_message_limit(0) do + post :new, + :display_name => users(:public_user).display_name, + :message => { :title => "Test Message", :body => "Test message body" } + assert_response :success + assert_template "new" + assert_select "p.error", /wait a while/ + end + end + end + end + ## # test the reply action def test_reply @@ -362,4 +383,16 @@ class MessageControllerTest < ActionController::TestCase assert_response :not_found assert_template "no_such_message" end + +private + + def with_message_limit(value) + max_messages_per_hour = Object.send("remove_const", "MAX_MESSAGES_PER_HOUR") + Object.const_set("MAX_MESSAGES_PER_HOUR", value) + + yield + + Object.send("remove_const", "MAX_MESSAGES_PER_HOUR") + Object.const_set("MAX_MESSAGES_PER_HOUR", max_messages_per_hour) + end end