diff options
Diffstat (limited to 'test/functional/api/smtp_certs_controller_test.rb')
-rw-r--r-- | test/functional/api/smtp_certs_controller_test.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/functional/api/smtp_certs_controller_test.rb b/test/functional/api/smtp_certs_controller_test.rb new file mode 100644 index 0000000..393f090 --- /dev/null +++ b/test/functional/api/smtp_certs_controller_test.rb @@ -0,0 +1,43 @@ +require 'test_helper' + +class Api::SmtpCertsControllerTest < ApiControllerTest + + test "no smtp cert without login" do + with_config allow_anonymous_certs: true do + api_post :create + assert_login_required + end + end + + test "require service level with email" do + login + api_post :create + assert_access_denied + end + + test "send cert with username" do + login effective_service_level: ServiceLevel.new(id: 2) + cert = expect_cert(@current_user.email_address) + cert.expects(:fingerprint).returns('fingerprint') + api_post :create + assert_response :success + assert_equal cert.to_s, @response.body + end + + test "fail to create cert when disabled" do + login :enabled? => false + api_post :create + assert_access_denied + end + + protected + + def expect_cert(email) + cert = stub to_s: "#{email.downcase} cert", + expiry: 1.month.from_now.utc.at_midnight + ClientCertificate.expects(:new). + with(:common_name => email). + returns(cert) + return cert + end +end |