def create_service_whitelist(service, email_address=None, mobile_number=None): if email_address: whitelisted_user = ServiceWhitelist.from_string(service.id, EMAIL_TYPE, email_address) elif mobile_number: whitelisted_user = ServiceWhitelist.from_string(service.id, MOBILE_TYPE, mobile_number) else: whitelisted_user = ServiceWhitelist.from_string(service.id, EMAIL_TYPE, '*****@*****.**') db.session.add(whitelisted_user) db.session.commit() return whitelisted_user
def test_remove_service_whitelist_only_removes_for_my_service(notify_db, notify_db_session): service_1 = create_service(notify_db, notify_db_session, service_name="service 1") service_2 = create_service(notify_db, notify_db_session, service_name="service 2") dao_add_and_commit_whitelisted_contacts([ ServiceWhitelist.from_string(service_1.id, EMAIL_TYPE, '*****@*****.**'), ServiceWhitelist.from_string(service_2.id, EMAIL_TYPE, '*****@*****.**') ]) dao_remove_service_whitelist(service_1.id) assert service_1.whitelist == [] assert len(service_2.whitelist) == 1
def test_get_whitelist_separates_emails_and_phones(client, sample_service): dao_add_and_commit_whitelisted_contacts([ ServiceWhitelist.from_string(sample_service.id, EMAIL_TYPE, '*****@*****.**'), ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '07123456789') ]) response = client.get('service/{}/whitelist'.format(sample_service.id), headers=[create_authorization_header()]) assert response.status_code == 200 assert json.loads(response.get_data(as_text=True)) == { 'email_addresses': ['*****@*****.**'], 'phone_numbers': ['07123456789'] }
def sample_service_whitelist(notify_db, notify_db_session, service=None, email_address=None, mobile_number=None): if service is None: service = sample_service(notify_db, notify_db_session) if email_address: whitelisted_user = ServiceWhitelist.from_string(service.id, EMAIL_TYPE, email_address) elif mobile_number: whitelisted_user = ServiceWhitelist.from_string(service.id, MOBILE_TYPE, mobile_number) else: whitelisted_user = ServiceWhitelist.from_string(service.id, EMAIL_TYPE, '*****@*****.**') notify_db.session.add(whitelisted_user) notify_db.session.commit() return whitelisted_user
def test_add_and_commit_whitelisted_contacts_saves_data(sample_service): whitelist = ServiceWhitelist.from_string(sample_service.id, EMAIL_TYPE, '*****@*****.**') dao_add_and_commit_whitelisted_contacts([whitelist]) db_contents = ServiceWhitelist.query.all() assert len(db_contents) == 1 assert db_contents[0].id == whitelist.id
def test_get_whitelist_separates_emails_and_phones(client, sample_service): dao_add_and_commit_whitelisted_contacts([ ServiceWhitelist.from_string(sample_service.id, EMAIL_TYPE, '*****@*****.**'), ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '0412345678'), ServiceWhitelist.from_string(sample_service.id, MOBILE_TYPE, '+1800-555-5555'), ]) response = client.get('service/{}/whitelist'.format(sample_service.id), headers=[create_authorization_header()]) assert response.status_code == 200 json_resp = json.loads(response.get_data(as_text=True)) assert json_resp['email_addresses'] == ['*****@*****.**'] assert sorted(json_resp['phone_numbers']) == sorted( ['+1800-555-5555', '0412345678'])
def sample_service_whitelist(notify_db, notify_db_session): service = create_service(check_if_service_exists=True) whitelisted_user = ServiceWhitelist.from_string( service.id, EMAIL_TYPE, '*****@*****.**') notify_db.session.add(whitelisted_user) notify_db.session.commit() return whitelisted_user
def get_whitelist_objects(service_id, request_json): return [ ServiceWhitelist.from_string(service_id, type, recipient) for type, recipient in ( get_recipients_from_request(request_json, 'phone_numbers', MOBILE_TYPE) + get_recipients_from_request(request_json, 'email_addresses', EMAIL_TYPE)) ]
def get_whitelist_objects(service_id, request_json): return [ ServiceWhitelist.from_string(service_id, type, recipient) for type, recipient in ( get_recipients_from_request(request_json, 'phone_numbers', MOBILE_TYPE) + get_recipients_from_request(request_json, 'email_addresses', EMAIL_TYPE) ) ]
def test_send_one_off_notification_raises_if_cant_send_to_recipient( notify_db_session, recipient, ): service = create_service(restricted=True) template = create_template(service=service) dao_add_and_commit_whitelisted_contacts([ ServiceWhitelist.from_string(service.id, MOBILE_TYPE, '07700900123'), ]) post_data = { 'template_id': str(template.id), 'to': recipient, 'created_by': str(service.created_by_id) } with pytest.raises(BadRequestError) as e: send_one_off_notification(service.id, post_data) assert 'service is in trial mode' in e.value.message
def test_should_not_build_service_whitelist_from_invalid_contact( recipient_type, contact): with pytest.raises(ValueError): ServiceWhitelist.from_string('service_id', recipient_type, contact)
def test_should_build_service_whitelist_from_email_address(email_address): service_whitelist = ServiceWhitelist.from_string('service_id', EMAIL_TYPE, email_address) assert service_whitelist.recipient == email_address
def test_should_build_service_whitelist_from_mobile_number(mobile_number): service_whitelist = ServiceWhitelist.from_string('service_id', MOBILE_TYPE, mobile_number) assert service_whitelist.recipient == mobile_number
def test_should_not_build_service_whitelist_from_invalid_contact(recipient_type, contact): with pytest.raises(ValueError): ServiceWhitelist.from_string('service_id', recipient_type, contact)