Beispiel #1
0
def test_delete_contacts_ok(monkeypatch):
    """
    Testing a valid delete scenario.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    email = Email(email='*****@*****.**')

    contact = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                      first_name='testfirstname',
                      surname='testsurname',
                      username='******',
                      emails=[email])
    database_mock = Mock()
    monkeypatch.setattr(
        'iqvia.contacts.views.Contact',
        Mock(query=Mock(filter=Mock(return_value=Mock(first=Mock(
            return_value=contact))))))
    monkeypatch.setattr('iqvia.contacts.views.db.session.delete',
                        database_mock)
    monkeypatch.setattr('iqvia.contacts.views.db.session.commit',
                        database_mock)

    status_code = delete('contacts/7e8377af-bdc3-4b9e-a491-2d9ddff3253f')

    assert database_mock.call_count == 2
    assert status_code == 204
Beispiel #2
0
def test_get_contact_by_email_ok(monkeypatch):
    """
    Testing a valid get by email scenario.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    email = Email(email='*****@*****.**')
    contact = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                      first_name='testfirstname',
                      surname='testsurname',
                      username='******',
                      emails=[email])

    get_mock = Mock(query=Mock(options=Mock(return_value=Mock(filter=Mock(
        return_value=Mock(first=Mock(return_value=contact)))))))

    monkeypatch.setattr('iqvia.contacts.views.Contact', get_mock)

    status_code, response_data = get(
        'contacts/[email protected]')

    assert response_data == {
        'username': '******',
        'first_name': 'testfirstname',
        'emails': [{
            'email': '*****@*****.**'
        }],
        'surname': 'testsurname',
        'inserted': None,
        'id': '7e8377af-bdc3-4b9e-a491-2d9ddff3253f'
    }

    assert status_code == 200
Beispiel #3
0
def test_get_contact_by_username_ok(monkeypatch):
    """
    Testing a valid get by username scenario.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    contact = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                      first_name='testfirstname',
                      surname='testsurname',
                      username='******',
                      email='*****@*****.**')
    monkeypatch.setattr(
        'iqvia.contacts.views.Contact',
        Mock(query=Mock(filter=Mock(return_value=Mock(first=Mock(
            return_value=contact))))))

    status_code, response_data = get('contacts/testsurname')
    assert response_data == {
        'id': '7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
        'surname': 'testsurname',
        'username': '******',
        'email': '*****@*****.**',
        'first_name': 'testfirstname'
    }
    assert status_code == 200
Beispiel #4
0
def test_update_contact_nok_username_already_exists(monkeypatch):
    """
    Testing a invalid contact update: the username passed already exists.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    email = Email(email='*****@*****.**')
    test_data = {
        "first_name":
        "tesfirstnameUPDATED",
        "surname":
        "testsurnameUPDATED",
        "emails": [{
            "email": "*****@*****.**"
        }, {
            "email": "*****@*****.**"
        }],
        "username":
        "******"
    }

    contact = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                      first_name='testfirstname',
                      surname='testsurname',
                      username='******',
                      emails=[email])
    database_mock = Mock()

    monkeypatch.setattr(
        'iqvia.contacts.views.uuid4',
        Mock(return_value='7e8377af-bdc3-4b9e-a491-2d9ddff3253f'))
    monkeypatch.setattr('iqvia.contacts.views.db.session.merge', database_mock)
    monkeypatch.setattr('iqvia.contacts.views.db.session.commit',
                        database_mock)
    monkeypatch.setattr('iqvia.contacts.views.does_contact_username_exist',
                        Mock(return_value=True))
    monkeypatch.setattr('iqvia.contacts.views.does_contact_emails_exist',
                        Mock(return_value=False))

    get_mock = Mock(query=Mock(options=Mock(return_value=Mock(filter=Mock(
        return_value=Mock(first=Mock(return_value=contact)))))))

    monkeypatch.setattr('iqvia.contacts.views.Contact', get_mock)
    status_code, response_data = post(
        'contacts/7e8377af-bdc3-4b9e-a491-2d9ddff3253f', test_data)

    assert response_data == {
        'errors': [{
            'message':
            'Sorry, you cannot update the contact with the '
            'username testusername1234UPDATED: it already exists'
        }]
    }
    assert status_code == 400
    assert database_mock.call_count == 0
Beispiel #5
0
def test_get_contacts_ok(monkeypatch):
    """
    Testing a valid contact fetching: list of contacts found.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    contact_1 = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                        first_name='testfirstname1',
                        surname='testsurname1',
                        username='******',
                        email='*****@*****.**')
    contact_2 = Contact(id='6e8377af-bdc3-4b9e-a491-2d9ddff3253g',
                        first_name='testfirstname2',
                        surname='testsurname2',
                        username='******',
                        email='*****@*****.**')

    monkeypatch.setattr(
        'iqvia.contacts.views.Contact',
        Mock(query=Mock(all=Mock(return_value=[contact_1, contact_2]))))

    status_code, response_data = get('contacts/')
    assert response_data == {
        'contacts': [{
            'email': '*****@*****.**',
            'id': '7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
            'username': '******',
            'surname': 'testsurname1',
            'first_name': 'testfirstname1'
        }, {
            'email': '*****@*****.**',
            'id': '6e8377af-bdc3-4b9e-a491-2d9ddff3253g',
            'username': '******',
            'surname': 'testsurname2',
            'first_name': 'testfirstname2'
        }]
    }
    assert status_code == 200
Beispiel #6
0
def test_update_contact_ok(monkeypatch):
    """
    Testing a valid contact update.
    :param monkeypatch: a monkeypatching instance.
    :return:
    """
    test_data = {
        "first_name": "tesfirstnameUPDATED",
        "surname": "testsurnameUPDATED",
        "email": "*****@*****.**",
        "username": "******"
    }

    contact = Contact(id='7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
                      first_name='testfirstname',
                      surname='testsurname',
                      username='******',
                      email='*****@*****.**')
    database_mock = Mock()

    monkeypatch.setattr(
        'iqvia.contacts.views.uuid4',
        Mock(return_value='7e8377af-bdc3-4b9e-a491-2d9ddff3253f'))
    monkeypatch.setattr('iqvia.contacts.views.db.session.add', database_mock)
    monkeypatch.setattr('iqvia.contacts.views.db.session.commit',
                        database_mock)
    monkeypatch.setattr('iqvia.contacts.views.does_contact_username_exist',
                        Mock(return_value=False))
    monkeypatch.setattr('iqvia.contacts.views.does_contact_email_exist',
                        Mock(return_value=False))
    monkeypatch.setattr(
        'iqvia.contacts.views.Contact',
        Mock(query=Mock(filter=Mock(return_value=Mock(first=Mock(
            return_value=contact))))))
    status_code, response_data = post(
        'contacts/7e8377af-bdc3-4b9e-a491-2d9ddff3253f', test_data)

    assert response_data == {
        'first_name': 'tesfirstnameUPDATED',
        'id': '7e8377af-bdc3-4b9e-a491-2d9ddff3253f',
        'email': '*****@*****.**',
        'surname': 'testsurnameUPDATED',
        'username': '******'
    }

    assert status_code == 200
    assert database_mock.call_count == 1