Exemplo n.º 1
0
def test_search_organizations(capsys):
    organization = OrganizationFactory()
    UserFactory(organization_id=organization)
    TicketFactory(organization_id=organization)

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = organization._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert (
        f'Searching organizations for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'name' in captured.out
    assert 'domain_names' in captured.out
    assert 'created_at' in captured.out
    assert 'details' in captured.out
    assert 'shared_tickets' in captured.out
    assert 'tags' in captured.out
    assert 'user_id' in captured.out
    assert 'user_name' in captured.out
    assert 'ticket_id' in captured.out
    assert 'ticket_subject' in captured.out
Exemplo n.º 2
0
def test_ticket_search_returns_data_only_for_the_requested_search_value():
    TicketFactory()
    TicketFactory()
    ticket = TicketFactory()

    search = Search(search_term='_id', search_value=ticket._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0]._id == ticket._id
    assert qs[0].url == ticket.url
    assert qs[0].external_id == ticket.external_id
    assert qs[0].created_at == ticket.created_at
    assert qs[0].type == ticket.type
    assert qs[0].subject == ticket.subject
    assert qs[0].description == ticket.description
    assert qs[0].priority == ticket.priority
    assert qs[0].status == ticket.status
    assert qs[0].submitter_id == ticket.submitter_id
    assert qs[0].assignee_id == ticket.assignee_id
    assert qs[0].organization_id == ticket.organization_id
    assert qs[0].tags == ticket.tags
    assert qs[0].has_incidents == ticket.has_incidents
    assert qs[0].due_at == ticket.due_at
    assert qs[0].via == ticket.via
Exemplo n.º 3
0
def test_user_search_returns_data_only_for_the_requested_search_value():
    UserFactory()
    UserFactory()
    user = UserFactory()

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].url == user.url
    assert qs[0].external_id == user.external_id
    assert qs[0].name == user.name
    assert qs[0].alias == user.alias
    assert qs[0].created_at == user.created_at
    assert qs[0].active == user.active
    assert qs[0].verified == user.verified
    assert qs[0].shared == user.shared
    assert qs[0].locale == user.locale
    assert qs[0].timezone == user.timezone
    assert qs[0].last_login_at == user.last_login_at
    assert qs[0].email == user.email
    assert qs[0].phone == user.phone
    assert qs[0].signature == user.signature
    assert qs[0].organization_id == user.organization_id
    assert qs[0].tags == user.tags
    assert qs[0].suspended == user.suspended
    assert qs[0].role == user.role
    assert qs[0].submitted_tickets.count() == 0
    assert qs[0].assigned_tickets.count() == 0
Exemplo n.º 4
0
def test_search_tickets(capsys):
    ticket = TicketFactory()

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = ticket._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_tickets()

    captured = capsys.readouterr()

    assert (
        f'Searching tickets for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'external_id' in captured.out
    assert 'created_at' in captured.out
    assert 'type' in captured.out
    assert 'subject' in captured.out
    assert 'description' in captured.out
    assert 'priority' in captured.out
    assert 'status' in captured.out
    assert 'submitter_id' in captured.out
    assert 'submitter_name' in captured.out
    assert 'assignee_id' in captured.out
    assert 'assignee_name' in captured.out
    assert 'organization_id' in captured.out
    assert 'orgnaization_name' in captured.out
    assert 'tags' in captured.out
    assert 'has_incidents' in captured.out
    assert 'due_at' in captured.out
    assert 'via' in captured.out
Exemplo n.º 5
0
def test_organization_search_returns_data_partially_matching_requested_search_value():
    OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='corp')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].details == 'MegaCorp'
Exemplo n.º 6
0
def test_organization_search_for_a_boolean_field_lookup():
    OrganizationFactory(shared_tickets='true')

    search = Search(search_term='shared_tickets', search_value='true')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].shared_tickets == 'true'
Exemplo n.º 7
0
def test_organization_search_for_a_character_field_lookup():
    OrganizationFactory(name='testName')

    search = Search(search_term='name', search_value='testName')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].name == 'testName'
Exemplo n.º 8
0
def test_organization_search_retrieves_data_when_value_is_blank():
    OrganizationFactory(name='')

    search = Search(search_term='name', search_value='')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].name == ''
Exemplo n.º 9
0
def test_user_search_using_foreign_key_organization_id_as_search_term():
    user = UserFactory()

    search = Search(search_term='organization_id', search_value=user.organization_id._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].organization_id._id == user.organization_id._id
Exemplo n.º 10
0
def test_ticket_search_is_case_insensitive():
    TicketFactory(via='web')

    search = Search(search_term='via', search_value='WEB')
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].via == 'web'
Exemplo n.º 11
0
def test_organization_search_is_case_insensitive():
    OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='megacorp')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].details == 'MegaCorp'
Exemplo n.º 12
0
def test_user_search_is_case_insensitive():
    UserFactory(role='admin')

    search = Search(search_term='role', search_value='ADMIN')
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].role == 'admin'
Exemplo n.º 13
0
def test_user_search_returns_data_partially_matching_requested_search_value():
    UserFactory(role='admin')

    search = Search(search_term='role', search_value='adm')
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0].role == 'admin'
Exemplo n.º 14
0
def test_ticket_search_returns_data_partially_matching_requested_search_value(
):
    TicketFactory(via='web')

    search = Search(search_term='via', search_value='we')
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].via == 'web'
Exemplo n.º 15
0
def test_ticket_search_using_foreign_key_submitter_id_as_search_term():
    ticket = TicketFactory()

    search = Search(search_term='submitter_id',
                    search_value=ticket.submitter_id._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].submitter_id._id == ticket.submitter_id._id
Exemplo n.º 16
0
def test_ticket_search_using_foreign_key_organization_id_as_search_term():
    ticket = TicketFactory()

    search = Search(search_term='organization_id',
                    search_value=ticket.organization_id._id)
    qs = search.search_tickets()

    assert len(qs) == 1
    assert qs[0].organization_id._id == ticket.organization_id._id
Exemplo n.º 17
0
def test_search_organizations_for_invalid_search_term(capsys):
    controller = AppController()
    controller.search_term = 'unknown'
    controller.search_value = 1
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert f'Invalid search term "{controller.search_term}"' in captured.out
Exemplo n.º 18
0
def test_organization_search_for_a_list_field_lookup():
    OrganizationFactory(
        domain_names='["kage.com", "ecratic.com", "endipin.com", "zentix.com"]'
    )

    search = Search(search_term='domain_names', search_value='kage')
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0].domain_names == '["kage.com", "ecratic.com", "endipin.com", "zentix.com"]'
Exemplo n.º 19
0
def test_user_search_does_not_return_tickets_when_no_tickets_are_submitted_by_user():
    user = UserFactory()
    for _ in range(3):
        TicketFactory()

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].submitted_tickets.count() == 0
Exemplo n.º 20
0
def test_ticket_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        TicketFactory(via='web')

    search = Search(search_term='via', search_value='web')
    qs = search.search_tickets()

    assert len(qs) == 3
    assert qs[0].via == 'web'
    assert qs[1].via == 'web'
    assert qs[2].via == 'web'
Exemplo n.º 21
0
def test_organization_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        OrganizationFactory(details='MegaCorp')

    search = Search(search_term='details', search_value='MegaCorp')
    qs = search.search_organizations()

    assert len(qs) == 3
    assert qs[0].details == 'MegaCorp'
    assert qs[1].details == 'MegaCorp'
    assert qs[2].details == 'MegaCorp'
Exemplo n.º 22
0
def test_user_search_returns_ticket_objects_assigned_to_user():
    user = UserFactory()
    for _ in range(3):
        TicketFactory(assignee_id=user)

    search = Search(search_term='_id', search_value=user._id)
    qs = search.search_users()

    assert len(qs) == 1
    assert qs[0]._id == user._id
    assert qs[0].assigned_tickets.count() == 3
Exemplo n.º 23
0
def test_user_search_returns_all_data_matching_requested_search_value():
    for _ in range(3):
        UserFactory(role='admin')

    search = Search(search_term='role', search_value='admin')
    qs = search.search_users()

    assert len(qs) == 3
    assert qs[0].role == 'admin'
    assert qs[1].role == 'admin'
    assert qs[2].role == 'admin'
Exemplo n.º 24
0
def test_search_organizations_for_no_data(capsys):
    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = 1
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_organizations()

    captured = capsys.readouterr()

    assert (
        f'No results found for search term {controller.search_term} '
        f'and search value {controller.search_value}'
    ) in captured.out
Exemplo n.º 25
0
def test_organization_search_does_not_return_user_and_ticket_objects_when_not_linked():
    organization = OrganizationFactory()
    for _ in range(2):
        UserFactory()
    for _ in range(3):
        TicketFactory()

    search = Search(search_term='_id', search_value=organization._id)
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0]._id == organization._id
    assert qs[0].users.count() == 0
    assert qs[0].tickets.count() == 0
Exemplo n.º 26
0
def test_organization_search_returns_data_only_for_the_requested_search_value():
    OrganizationFactory()
    OrganizationFactory()
    organization = OrganizationFactory()

    search = Search(search_term='_id', search_value=organization._id)
    qs = search.search_organizations()

    assert len(qs) == 1
    assert qs[0]._id == organization._id
    assert qs[0].url == organization.url
    assert qs[0].external_id == organization.external_id
    assert qs[0].name == organization.name
    assert qs[0].domain_names == organization.domain_names
    assert qs[0].created_at == organization.created_at
    assert qs[0].details == organization.details
    assert qs[0].shared_tickets == organization.shared_tickets
    assert qs[0].tags == organization.tags
Exemplo n.º 27
0
def test_search_users(capsys):
    user = UserFactory()
    TicketFactory(assignee_id=user)
    TicketFactory(submitter_id=user)

    controller = AppController()
    controller.search_term = '_id'
    controller.search_value = user._id
    controller.search = Search(controller.search_term, controller.search_value)
    controller.search_users()

    captured = capsys.readouterr()

    assert (
        f'Searching users for {controller.search_term} with a value of {controller.search_value}'
    ) in captured.out

    assert '_id' in captured.out
    assert 'url' in captured.out
    assert 'external_id' in captured.out
    assert 'name' in captured.out
    assert 'alias' in captured.out
    assert 'created_at' in captured.out
    assert 'active' in captured.out
    assert 'verified' in captured.out
    assert 'shared' in captured.out
    assert 'locale' in captured.out
    assert 'timezone' in captured.out
    assert 'last_login_at' in captured.out
    assert 'email' in captured.out
    assert 'phone' in captured.out
    assert 'signature' in captured.out
    assert 'organization_id' in captured.out
    assert 'orgnaization_name' in captured.out
    assert 'tags' in captured.out
    assert 'suspended' in captured.out
    assert 'role' in captured.out
    assert 'submitted_ticket_id' in captured.out
    assert 'submitted_ticket_subject' in captured.out
    assert 'assigned_ticket_id' in captured.out
    assert 'assigned_ticket_subject' in captured.out
Exemplo n.º 28
0
def test_user_search_for_no_matching_data():
    user = UserFactory()
    search = Search(search_term='_id', search_value=user._id+1)
    qs = search.search_users()
    assert len(qs) == 0
Exemplo n.º 29
0
def test_user_search_raises_exception_for_invalid_search_term():
    with pytest.raises(InvalidSearchTermException) as e:
        search = Search(search_term='hello', search_value='web')
        search.search_users()
    assert str(e.value) == 'Invalid search term "hello" for users search.'
Exemplo n.º 30
0
def test_user_search_for_no_data():
    search = Search(search_term='_id', search_value=1)
    qs = search.search_users()
    assert len(qs) == 0