def it_finds_a_user(mocker): # noqa: F811 mocker.patch( 'ldap_tools.client.Client.search', return_value=['foo']) mocker.patch( 'ldap_tools.client.Client.prepare_connection', return_value=None) user_api = UserApi(client) user_api.find(username) ldap_tools.client.Client.search.assert_called_once_with( ['(uid={})'.format(username)])
def it_finds_no_users(mocker): # noqa: F811 mocker.patch( 'ldap_tools.client.Client.search', return_value=[]) mocker.patch( 'ldap_tools.client.Client.prepare_connection', return_value=None) user_api = UserApi(client) with pytest.raises( ldap_tools.exceptions.NoUserFound, message="User ({}) not found"): user_api.find(username)
def it_finds_two_users(mocker): # noqa: F811 mocker.patch( 'ldap_tools.client.Client.search', return_value=['foo', 'bar']) mocker.patch( 'ldap_tools.client.Client.prepare_connection', return_value=None) user_api = UserApi(client) with pytest.raises( ldap_tools.exceptions.TooManyResults, message=( "Multiple users found. Please narrow your search." )): user_api.find(username)
def it_removes_key_from_user(mocker): # noqa: F811 pytest.xfail(reason='Need to learn how to mock user.entry_dn') client.modify = MagicMock() client.search = MagicMock() user_api = UserApi(client) user_api.find = MagicMock(return_value=ldap_entry) key_api = KeyApi(client) with open(path.join(fixture_path, 'two_key_user'), 'r') as FILE: # get current keys mocker.patch.object(key_api, '_API__current_keys', return_value=FILE.read().splitlines()) filename = path.join(fixture_path, 'delete_user_key') key_api.remove(username, user_api, filename, True) client.modify.assert_called_once_with(distinguished_name, mock.ANY)
def describe_key_addition(): client.modify = MagicMock() user_api = UserApi(client) user_api.find = MagicMock(return_value=ldap_entry) key_api = KeyApi(client) def it_calls_the_client(): pytest.xfail(reason='Need to learn how to mock user.entry_dn') client.modify.reset_mock() filename = path.join(fixture_path, 'single_key_user') key_api.add(username, user_api, filename) client.modify.assert_called_once_with(distinguished_name, mock.ANY) def it_raises_error_on_bad_key(): pytest.xfail(reason='Need to learn how to mock user.entry_dn') filename = path.join(fixture_path, 'invalid_user_key') with pytest.raises(sshpubkeys.exceptions.MalformedDataError): key_api.add(username, user_api, filename) def it_raises_error_on_bad_object(): pytest.xfail(reason='Need to learn how to mock user.entry_dn') filename = path.join(fixture_path, 'single_key_user') ldap_entry = [[ distinguished_name, { 'objectClass': [ b'top', b'posixAccount', b'shadowAccount', b'inetOrgPerson', b'organizationalPerson', b'person' ] } ]] user_api.find = MagicMock(return_value=ldap_entry) with pytest.raises( ldap3.core.exceptions.LDAPNoSuchAttributeResult): key_api.add(username, user_api, filename)