require 'test_helper' class EppContactUpdateBaseTest < EppTestCase include ActionMailer::TestHelper setup do @contact = contacts(:john) ActionMailer::Base.deliveries.clear end def test_updates_contact assert_equal 'john-001', @contact.code assert_not_equal 'new name', @contact.name assert_not_equal 'new-email@inbox.test', @contact.email assert_not_equal '+123.4', @contact.phone # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML john-001 new name +123.4 new-email@inbox.test XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } @contact.reload assert_epp_response :completed_successfully assert_equal 'new name', @contact.name assert_equal 'new-email@inbox.test', @contact.email assert_equal '+123.4', @contact.phone end def test_notifies_contact_by_email_when_email_is_changed assert_equal 'john-001', @contact.code assert_not_equal 'john-new@inbox.test', @contact.email # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML john-001 john-new@inbox.test XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } assert_emails 1 end def test_skips_notifying_contact_when_email_is_not_changed assert_equal 'john-001', @contact.code assert_equal 'john@inbox.test', @contact.email # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML john-001 john@inbox.test XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } assert_no_emails end def test_skips_notifying_a_contact_when_a_contact_is_not_a_registrant assert_equal 'john-001', @contact.code assert_not_equal 'john-new@inbox.test', @contact.email make_contact_free_of_domains_where_it_acts_as_a_registrant(@contact) assert_not @contact.registrant? # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML john-001 john-new@inbox.test XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } assert_no_emails end def test_non_existing_contact assert_nil Contact.find_by(code: 'non-existing') request_xml = <<-XML non-existing any XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } assert_epp_response :object_does_not_exist end def test_ident_code_cannot_be_updated new_ident_code = '12345' assert_not_equal new_ident_code, @contact.ident # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML #{@contact.code} #{new_ident_code} XML assert_no_changes -> { @contact.updated_at } do post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } end assert_epp_response :data_management_policy_violation end # https://github.com/internetee/registry/issues/576 def test_ident_type_and_ident_country_code_can_be_updated_when_absent @contact.update_columns(ident: 'test', ident_type: nil, ident_country_code: nil) # https://github.com/internetee/registry/issues/415 @contact.update_columns(code: @contact.code.upcase) request_xml = <<-XML #{@contact.code} #{@contact.ident} XML post epp_update_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } assert_epp_response :completed_successfully end private def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact) other_contact = contacts(:william) assert_not_equal other_contact, contact Domain.update_all(registrant_id: other_contact.id) end end