def test_positive_remove_role(self): """Remove role from User for all variations of role names @id: 51b15516-da42-4149-8032-87baa93f9e56 @Assert: Role is removed @BZ: 1138553 @CaseLevel: Integration """ user = make_user() include_list = [gen_string("alphanumeric", 100)] for role_name in valid_usernames_list() + include_list: with self.subTest(role_name): make_role({'name': role_name}) User.add_role({ 'login': user['login'], 'role': role_name, }) user = User.info({'id': user['id']}) self.assertIn(role_name, user['roles']) User.remove_role({ 'login': user['login'], 'role': role_name, }) user = User.info({'id': user['id']}) self.assertNotIn(role_name, user['roles'])
def test_user_remove_role_1(self): """@Test: Remove role to User for all variations of role names @Feature: User - Remove role @Steps: 1. Create role and add it to the user . Try to remove the role @Assert: Role is removed @BZ: 1138553 """ user = make_user() include_list = [gen_string("alphanumeric", 100)] for role_name in valid_usernames_list() + include_list: with self.subTest(role_name): make_role({'name': role_name}) self.__assert_exists(user) UserObj.add_role({ 'login': user['login'], 'role': role_name, }) user = UserObj.info({'id': user['id']}) self.assertIn(role_name, user['roles']) UserObj.remove_role({ 'login': user['login'], 'role': role_name, }) user = UserObj.info({'id': user['id']}) self.assertNotIn(role_name, user['roles'])
def test_positive_remove_role(self): """Remove role from User for all variations of role names @Feature: User - Remove role @Assert: Role is removed @BZ: 1138553 """ user = make_user() include_list = [gen_string("alphanumeric", 100)] for role_name in valid_usernames_list() + include_list: with self.subTest(role_name): make_role({'name': role_name}) User.add_role({ 'login': user['login'], 'role': role_name, }) user = User.info({'id': user['id']}) self.assertIn(role_name, user['roles']) User.remove_role({ 'login': user['login'], 'role': role_name, }) user = User.info({'id': user['id']}) self.assertNotIn(role_name, user['roles'])
def test_positive_add_and_delete_roles(self): """Add multiple roles to User, then delete them For now add-role user sub command does not allow multiple role ids (https://github.com/SatelliteQE/robottelo/issues/3729) So if if it gets fixed this test can be updated: (http://projects.theforeman.org/issues/16206) :BZ: 1138553 :id: d769ac61-f158-4e4e-a176-1c87de8b00f6 :expectedresults: Roles are added to user and deleted successfully :CaseLevel: Integration """ user = make_user() original_role_names = set(user['roles']) expected_role_names = set(original_role_names) for role_id, role in self.stubbed_roles.items(): User.add_role({'login': user['login'], 'role-id': role_id}) expected_role_names.add(role['name']) self.assertItemsEqual(expected_role_names, User.info({'id': user['id']})['roles']) roles_to_remove = expected_role_names - original_role_names for role_name in roles_to_remove: user_credentials = {'login': user['login'], 'role': role_name} User.remove_role(user_credentials) user = User.info({'id': user['id']}) self.assertNotIn(role_name, user['roles']) self.assertItemsEqual(original_role_names, User.info({'id': user['id']})['roles'])
def test_user_remove_role_1(self, test_data): """@Test: Remove role to User for all variations of role names @Feature: User - Remove role @Steps: 1. Create role and add it to the user . Try to remove the role @Assert: Role is removed @BZ: 1138553 """ user = make_user() role = make_role(test_data) self.__assert_exists(user) UserObj.add_role({ 'login': user['login'], 'role': role['name'], }) user = UserObj.info({'id': user['id']}) self.assertIn(role['name'], user['roles']) UserObj.remove_role({ 'login': user['login'], 'role': role['name'], }) user = UserObj.info({'id': user['id']}) self.assertNotIn(role['name'], user['roles'])
def test_positive_delete_by_id(self): """Create an user and then delete it using its id @Feature: User - Positive Delete @Assert: User is deleted """ user = make_user() User.exists(search=('login', user['login'])) User.delete({'id': user['id']}) with self.assertRaises(CLIReturnCodeError): User.info({'login': user['login']})
def test_positive_delete_by_id(self): """Create an user and then delete it using its id @id: 7e97e177-b676-49b3-86ee-644f6f6ff30c @Assert: User is deleted """ user = make_user() User.exists(search=('login', user['login'])) User.delete({'id': user['id']}) with self.assertRaises(CLIReturnCodeError): User.info({'login': user['login']})
def test_positive_delete_admin(self): """Delete an admin user @id: 9752706c-fdbd-4a36-af6f-27824d22ea03 @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login), self.assertRaises(CLIReturnCodeError): user = make_user({"login": login, "admin": 'true'}) self.assertEqual(user['admin'], 'yes') User.delete({'login': user['login']}) User.info({'login': user['login']})
def test_positive_delete_admin(self): """Delete an admin user @Feature: User - Positive Delete @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login): user = make_user({"login": login, "admin": 'true'}) self.assertEqual(user['admin'], 'yes') User.delete({'login': user['login']}) with self.assertRaises(CLIReturnCodeError): User.info({'login': user['login']})
def test_positive_delete_by_name(self): """Create an user and then delete it using its name @Feature: User - Positive Delete @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login): user = make_user({'login': login}) self.assertEqual(user['login'], login) User.delete({'login': user['login']}) with self.assertRaises(CLIReturnCodeError): User.info({'login': user['login']})
def test_positive_delete_by_name(self): """Create an user and then delete it using its name @id: 37cf4313-012f-4215-b537-030ee61c1c3c @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login): user = make_user({'login': login}) self.assertEqual(user['login'], login) User.delete({'login': user['login']}) with self.assertRaises(CLIReturnCodeError): User.info({'login': user['login']})
def test_positive_delete_by_name(self): """Create an user and then delete it using its name @id: 37cf4313-012f-4215-b537-030ee61c1c3c @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login), self.assertRaises(CLIReturnCodeError): user = make_user({'login': login}) self.assertEqual(user['login'], login) User.delete({'login': user['login']}) User.info({'login': user['login']})
def test_positive_create_and_refresh_external_usergroup_with_local_user( self): """Create and Refresh external user group with FreeIPA LDAP. Verify Local user association from user-group with external group with FreeIPA LDAP :id: bd6152e3-51ac-4e84-b084-8bab1c4eb583 :expectedresults: User group is created successfully and assigned to correct auth source. User group is refreshed successfully. Local user is associated from user group with external group. :CaseLevel: Integration :BZ: 1412209 """ ext_user_group = make_usergroup_external({ 'auth-source-id': self.auth['server']['id'], 'user-group-id': self.user_group['id'], 'name': 'foobargroup', }) self.assertEqual(ext_user_group['auth-source'], self.auth['server']['name']) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) user = make_user() UserGroup.add_user({ 'user': user['login'], 'id': self.user_group['id'] }) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'], ) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) print(User.info({'login': user['login']})) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'], )
def test_positive_automate_bz1426957(self): """Verify role is properly reflected on AD user. :id: 1c1209a6-5bb8-489c-a151-bb2fce4dbbfc :expectedresults: Roles from usergroup is applied on AD user successfully. :CaseLevel: Integration :BZ: 1426957 """ ext_user_group = make_usergroup_external({ 'auth-source-id': self.auth['server']['id'], 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) self.assertEqual( ext_user_group['auth-source'], self.auth['server']['name'] ) role = make_role() UserGroup.add_role({'id': self.user_group['id'], 'role-id': role['id']}) with self.assertNotRaises(CLIReturnCodeError): Task.with_user(username=self.ldap_user_name, password=self.ldap_user_passwd).list() UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) self.assertEqual(User.info({'login': self.ldap_user_name})['user-groups'][1], role['name']) User.delete({'login': self.ldap_user_name})
def test_positive_add_roles(self): """Add multiple roles to User For now add-role user sub command does not allow multiple role ids (https://github.com/SatelliteQE/robottelo/issues/3729) So if if it gets fixed this test can be updated: (http://projects.theforeman.org/issues/16206) :id: d769ac61-f158-4e4e-a176-1c87de8b00f6 :expectedresults: Roles are added to user :CaseLevel: Integration """ user = self.user original_role_names = set(user['roles']) expected_role_names = set(original_role_names) for role_id, role in self.stubbed_roles.items(): User.add_role({'login': user['login'], 'role-id': role_id}) expected_role_names.add(role['name']) self.assertItemsEqual( expected_role_names, User.info({'id': user['id']})['roles'] )
def test_positive_delete_by_name(self): """Create an user and then delete it using its name :id: 37cf4313-012f-4215-b537-030ee61c1c3c :expectedresults: User is deleted :CaseImportance: Critical """ for login in valid_usernames_list(): with self.subTest(login), self.assertRaises(CLIReturnCodeError): user = make_user({'login': login}) self.assertEqual(user['login'], login) User.delete({'login': user['login']}) User.info({'login': user['login']})
def test_positive_update_user_4(self): """@Test: Update Email Address in User @Feature: User - Positive Update @Steps: 1. Create User 2. Update Email Address for all variations in [1] @Assert: User is updated """ user = make_user() for data in (gen_string("alpha"), gen_string("alphanumeric"), gen_string("numeric"), '{0}+{1}'.format(gen_alphanumeric(), gen_alphanumeric()), '{0}.{1}'.format(gen_alphanumeric(), gen_alphanumeric()), r"!#$%&*+-/=?^`{|}~"): with self.subTest(data): email = '{0}@example.com'.format(data) UserObj.update({ 'id': user['id'], # escape ` to avoid bash syntax error 'mail': email.replace('`', r'\`'), }) result = UserObj.info({'id': user['id']}) self.assertEqual(result['email'], email)
def test_positive_automate_bz1426957(ldap_auth_source, function_user_group): """Verify role is properly reflected on AD user. :id: 1c1209a6-5bb8-489c-a151-bb2fce4dbbfc :expectedresults: Roles from usergroup is applied on AD user successfully. :CaseLevel: Integration :BZ: 1426957, 1667704 """ ext_user_group = make_usergroup_external({ 'auth-source-id': ldap_auth_source['id'], 'user-group-id': function_user_group['id'], 'name': 'foobargroup', }) assert ext_user_group['auth-source'] == ldap_auth_source['ldap_hostname'] role = make_role() UserGroup.add_role({ 'id': function_user_group['id'], 'role-id': role['id'] }) Task.with_user(username=ldap_auth_source['user_name'], password=ldap_auth_source['user_password']).list() UserGroupExternal.refresh({ 'user-group-id': function_user_group['id'], 'name': 'foobargroup' }) assert role['name'] in User.info({'login': ldap_auth_source['user_name'] })['user-groups'] User.delete({'login': ldap_auth_source['user_name']})
def test_positive_automate_bz1426957(self): """Verify role is properly reflected on AD user. :id: 1c1209a6-5bb8-489c-a151-bb2fce4dbbfc :expectedresults: Roles from usergroup is applied on AD user successfully. :CaseLevel: Integration :BZ: 1426957, 1667704 """ ext_user_group = make_usergroup_external( { 'auth-source-id': self.auth['server']['id'], 'user-group-id': self.user_group['id'], 'name': 'foobargroup', } ) self.assertEqual(ext_user_group['auth-source'], self.auth['server']['name']) role = make_role() UserGroup.add_role({'id': self.user_group['id'], 'role-id': role['id']}) with self.assertNotRaises(CLIReturnCodeError): Task.with_user(username=self.ldap_user_name, password=self.ldap_user_passwd).list() UserGroupExternal.refresh( {'user-group-id': self.user_group['id'], 'name': 'foobargroup'} ) self.assertEqual(User.info({'login': self.ldap_user_name})['user-groups'][1], role['name']) User.delete({'login': self.ldap_user_name})
def test_automation_bz_1110337(self): """@Test: Automation of BZ 1110337 @Feature: User - info, list BZ @Assert: No undefined method exception """ users = [make_user() for _ in range(4)] # non-existing user info with self.assertRaises(CLIReturnCodeError) as exe: UserObj.info({'id': 0}) self.assertNotRegexpMatches(exe.exception.stderr, 'undefined method') # list users result = UserObj.list() for user in users: self.assertNotEqual(str(result).find(user['login']), -1)
def test_positive_create_and_refresh_external_usergroup_with_local_user( self): """Create and refresh external user group with AD LDAP. Verify Local user association from user-group with external group with AD LDAP :id: 7431979c-aea8-4984-bb7d-185f5b7c3109 :expectedresults: User group is created and refreshed successfully. Local user is associated from user-group with external group. :CaseLevel: Integration :BZ: 1412209 """ ext_user_group = make_usergroup_external({ 'auth-source-id': self.auth['server']['id'], 'user-group-id': self.user_group['id'], 'name': 'foobargroup', }) self.assertEqual(ext_user_group['auth-source'], self.auth['server']['name']) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) user = make_user() UserGroup.add_user({ 'user': user['login'], 'id': self.user_group['id'] }) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'], ) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'], )
def test_bugzilla_1079649_1(self): """@Test: Delete a user by it's name @Feature: User @Steps: 1. Create User 2. Delete the User @Assert: User is deleted """ user = make_user() self.__assert_exists(user) UserObj.delete({'login': user['login']}) # make sure user was removed with self.assertRaises(CLIReturnCodeError): UserObj.info({'login': user['login']})
def test_positive_delete_user_2(self): """@Test: Delete an admin user @Feature: User - Positive Delete @Steps: 1. Create an admin user 2. Delete the User @Assert: User is deleted """ for login in valid_usernames_list(): with self.subTest(login): user = make_user({"login": login, "admin": 'true'}) self.__assert_exists(user) UserObj.delete({'login': user['login']}) with self.assertRaises(CLIReturnCodeError): UserObj.info({'login': user['login']})
def test_positive_delete_user_1(self, test_data): """@Test: Delete a user @Feature: User - Positive Delete @Steps: 1. Create User 2. Delete the User @Assert: User is deleted """ user = make_user(test_data) self.__assert_exists(user) UserObj.delete({'login': user['login']}) # make sure user was removed with self.assertRaises(CLIReturnCodeError): UserObj.info({'login': user['login']})
def test_positive_local_user_with_external_usergroup(self): """Verify Local user association from user-group with external group with AD LDAP :id: 7431979c-aea8-4984-bb7d-185f5b7c3109 :expectedresults: Local user is associated from user-group with external group. :CaseLevel: Integration :BZ: 1412209 """ ext_user_group = make_usergroup_external({ 'auth-source-id': self.auth['server']['id'], 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) self.assertEqual( ext_user_group['auth-source'], self.auth['server']['name'] ) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) user = make_user() UserGroup.add_user({ 'user': user['login'], 'id': self.user_group['id'] }) print(User.info({'login': user['login']})) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'] ) with self.assertNotRaises(CLIReturnCodeError): UserGroupExternal.refresh({ 'user-group-id': self.user_group['id'], 'name': 'foobargroup' }) print(User.info({'login': user['login']})) self.assertEqual( User.info({'login': user['login']})['user-groups'][0]['usergroup'], self.user_group['name'] )
def test_positive_find_admin_user(self): """Check if Admin User is present @Feature: Smoke Test @Assert: Admin User is found and has Admin role """ result = User.info({u'login': u'admin'}) self.assertEqual(result['login'], 'admin') self.assertEqual(result['admin'], 'yes')
def test_positive_cli_find_admin_user(): """Check if Admin User is present :id: f6755189-05a6-4d2f-a3b8-98be0cfacaee :expectedresults: Admin User is found and has Admin role """ result = User.info({'login': '******'}) assert result['login'] == 'admin' assert result['admin'] == 'yes'
def test_positive_find_admin_user(self): """Check if Admin User is present @id: f6755189-05a6-4d2f-a3b8-98be0cfacaee @Assert: Admin User is found and has Admin role """ result = User.info({u'login': u'admin'}) self.assertEqual(result['login'], 'admin') self.assertEqual(result['admin'], 'yes')
def test_negative_delete_internal_admin(self): """Attempt to delete internal admin user @id: 4fc92958-9e75-4bd2-bcbe-32f906e432f5 @Assert: User is not deleted """ with self.assertRaises(CLIReturnCodeError): User.delete({'login': self.foreman_user}) self.assertTrue(User.info({'login': self.foreman_user}))
def test_negative_delete_internal_admin(self): """Attempt to delete internal admin user @id: 4fc92958-9e75-4bd2-bcbe-32f906e432f5 @Assert: User is not deleted """ with self.assertRaises(CLIReturnCodeError) as raise_ctx: User.delete({'login': self.foreman_user}) self.assert_error_msg(raise_ctx, u'Could not delete the user:'******'login': self.foreman_user}))
def test_positive_update_email(self): """Update Email Address in My Account @Feature: My Account - Positive Update @Assert: Current User is updated """ email = u'{0}@example.com'.format(gen_string('alphanumeric')) User.update({'id': self.user['id'], 'mail': email}) result = User.info({'id': self.user['id']}) self.assertEqual(result['email'], email)
def test_positive_update_email(self): """Update Email Address in My Account @id: 70bab43b-0842-45a1-81fb-e47ff8646c8e @Assert: Current User is updated """ email = u'{0}@example.com'.format(gen_string('alphanumeric')) User.update({'id': self.user['id'], 'mail': email}) result = User.info({'id': self.user['id']}) self.assertEqual(result['email'], email)
def test_negative_delete_internal_admin(self): """Attempt to delete internal admin user @Feature: User - Negative Delete @Assert: User is not deleted """ login = settings.server.admin_username with self.assertRaises(CLIReturnCodeError): User.delete({'login': login}) self.assertTrue(User.info({'login': login}))
def test_positive_update_surname(self): """Update Surname in My Account @Feature: My Account - Positive Update @Assert: Current User is updated """ new_lastname = gen_string('alphanumeric') User.update({'id': self.user['id'], 'lastname': new_lastname}) result = User.info({'id': self.user['id']}) updated_last_name = result['name'].split(' ') self.assertEqual(updated_last_name[1], new_lastname)
def test_positive_update_first_name(self): """Update Firstname in My Account @id: f8de3843-f2dc-4121-ab75-625c8f542627 @Assert: Current User is updated """ new_firstname = gen_string('alphanumeric') User.update({'id': self.user['id'], 'firstname': new_firstname}) result = User.info({'id': self.user['id']}) updated_first_name = result['name'].split(' ') self.assertEqual(updated_first_name[0], new_firstname)
def test_negative_delete_internal_admin(self): """Attempt to delete internal admin user :id: 4fc92958-9e75-4bd2-bcbe-32f906e432f5 :expectedresults: User is not deleted :CaseImportance: Critical """ with self.assertRaisesRegex(CLIReturnCodeError, 'Could not delete the user:'******'login': self.foreman_user}) self.assertTrue(User.info({'login': self.foreman_user}))
def test_positive_update_surname(self): """Update Surname in My Account @id: 40ad2e78-a2af-45ca-bbd8-e9ca5178dc41 @Assert: Current User is updated """ new_lastname = gen_string('alphanumeric') User.update({'id': self.user['id'], 'lastname': new_lastname}) result = User.info({'id': self.user['id']}) updated_last_name = result['name'].split(' ') self.assertEqual(updated_last_name[1], new_lastname)
def test_negative_delete_internal_admin(self): """Attempt to delete internal admin user :id: 4fc92958-9e75-4bd2-bcbe-32f906e432f5 :expectedresults: User is not deleted :CaseImportance: Critical """ with pytest.raises(CLIReturnCodeError): User.delete({'login': settings.server.admin_username}) assert User.info({'login': settings.server.admin_username})
def assert_user_roles(self, roles_dct): """ Check if roles present on roles_dct are added to user :param roles_dct: dictionary if roles """ user = self.user expected_role_names = set(user['roles']) for role_id, role in roles_dct.items(): User.add_role({'login': user['login'], 'role-id': role_id}) expected_role_names.add(role['name']) self.assertItemsEqual(expected_role_names, User.info({'id': user['id']})['roles'])
def test_positive_remove_role(self): """Remove role from User for all variations of role names :id: 51b15516-da42-4149-8032-87baa93f9e56 :expectedresults: Role is removed :BZ: 1138553 :CaseLevel: Integration """ user = self.user for role_id, role in self.stubbed_roles.items(): role_name = role['name'] with self.subTest(role_name): user_credentials = {'login': user['login'], 'role': role_name} User.add_role(user_credentials) user = User.info({'id': user['id']}) self.assertIn(role_name, user['roles']) User.remove_role(user_credentials) user = User.info({'id': user['id']}) self.assertNotIn(role_name, user['roles'])
def test_positive_CRUD_admin(self): """Create an Admin user :id: 0d0384ad-d85a-492e-8630-7f48912a4fd5 :expectedresults: Admin User is created, updated, deleted :CaseImportance: Critical """ user = make_user({'admin': '1'}) assert user['admin'] == 'yes' # update to non admin by id User.update({'id': user['id'], 'admin': '0'}) user = User.info({'id': user['id']}) assert user['admin'] == 'no' # update back to admin by name User.update({'login': user['login'], 'admin': '1'}) user = User.info({'login': user['login']}) assert user['admin'] == 'yes' # delete user User.delete({'login': user['login']}) with pytest.raises(CLIReturnCodeError): User.info({'id': user['id']})
def assert_user_roles(self, roles_dct): """ Check if roles present on roles_dct are added to user :param roles_dct: dictionary if roles """ user = self.user expected_role_names = set(user['roles']) for role_id, role in roles_dct.items(): User.add_role({'login': user['login'], 'role-id': role_id}) expected_role_names.add(role['name']) self.assertItemsEqual( expected_role_names, User.info({'id': user['id']})['roles'] )
def test_positive_update_to_admin(self): """Convert usual user to an admin user @id: 3c5cdeb0-c529-472e-a291-269b703bf9d1 @Assert: User is updated """ user = self.user self.assertEqual(user['admin'], 'no') User.update({ 'id': user['id'], 'admin': '1', }) user = User.info({'id': user['id']}) self.assertEqual(user['admin'], 'yes')
def test_positive_update_org(self): """Assign a User to an Org @id: 7d16ea11-b1e9-4f3b-b3c5-a4b8569947da @Assert: User is updated """ user = self.user org = make_org() User.update({ 'id': user['id'], 'organization-ids': org['id'], }) user = User.info({'id': user['id']}) self.assertEqual(org['name'], user['organizations'][0])
def test_positive_update_password(self): """Update Password in My Account @id: e7e9b212-f0aa-4f7e-8433-b4639da89495 @Assert: User is updated """ password = gen_string('alphanumeric') User.update({ 'id': self.user['id'], 'password': password, }) User.foreman_admin_password = password result = User.info({'id': self.user['id']}) self.assertTrue(result)