def test_pass_in_principal(self): principal = User('me', 'letmein') call = ScheduledCall('PT1M', 'pulp.tasks.dosomething', principal=principal) self.assertEqual(call.principal, principal)
def test_associate_from_repo_no_criteria(self): # Setup source_repo_id = 'source-repo' dest_repo_id = 'dest-repo' self.repo_manager.create_repo(source_repo_id) self.importer_manager.set_importer(source_repo_id, 'mock-importer', {}) self.repo_manager.create_repo(dest_repo_id) self.importer_manager.set_importer(dest_repo_id, 'mock-importer', {}) self.content_manager.add_content_unit('mock-type', 'unit-1', {'key-1': 'unit-1'}) self.content_manager.add_content_unit('mock-type', 'unit-2', {'key-1': 'unit-2'}) self.content_manager.add_content_unit('mock-type', 'unit-3', {'key-1': 'unit-3'}) self.manager.associate_unit_by_id(source_repo_id, 'mock-type', 'unit-1') self.manager.associate_unit_by_id(source_repo_id, 'mock-type', 'unit-2') self.manager.associate_unit_by_id(source_repo_id, 'mock-type', 'unit-3') fake_user = User('associate-user', '') manager_factory.principal_manager().set_principal(principal=fake_user) mock_plugins.MOCK_IMPORTER.import_units.return_value = [ Unit('mock-type', {'k': 'v'}, {}, '') ] # Test results = self.manager.associate_from_repo(source_repo_id, dest_repo_id) associated = results['units_successful'] # Verify self.assertEqual(1, len(associated)) self.assertEqual(associated[0]['type_id'], 'mock-type') self.assertEqual(associated[0]['unit_key'], {'k': 'v'}) self.assertEqual(1, mock_plugins.MOCK_IMPORTER.import_units.call_count) args = mock_plugins.MOCK_IMPORTER.import_units.call_args[0] kwargs = mock_plugins.MOCK_IMPORTER.import_units.call_args[1] self.assertTrue(isinstance(args[0], Repository)) # repository transfer object self.assertEqual(args[0].id, 'source-repo') # repo importing units from self.assertEqual(args[1].id, 'dest-repo') # repo importing units into self.assertEqual(None, kwargs['units']) # units to import self.assertTrue(isinstance(args[3], PluginCallConfiguration)) # config conduit = args[2] self.assertTrue(isinstance(conduit, ImportUnitConduit)) # Clean Up manager_factory.principal_manager().set_principal(principal=None)
def create_user(login, password=None, name=None, roles=None): """ Creates a new Pulp user and adds it to specified to roles. @param login: login name / unique identifier for the user @type login: str @param password: password for login credentials @type password: str @param name: user's full name @type name: str @param roles: list of roles user will belong to @type roles: list @raise DuplicateResource: if there is already a user with the requested login @raise InvalidValue: if any of the fields are unacceptable """ existing_user = User.get_collection().find_one({'login': login}) if existing_user is not None: raise DuplicateResource(login) invalid_values = [] if login is None or _USER_LOGIN_REGEX.match(login) is None: invalid_values.append('login') if invalid_type(name, basestring): invalid_values.append('name') if invalid_type(roles, list): invalid_values.append('roles') if invalid_values: raise InvalidValue(invalid_values) # Use the login for name of the user if one was not specified name = name or login roles = roles or None # Encode plain-text password hashed_password = None if password: hashed_password = factory.password_manager().hash_password(password) # Creation create_me = User(login=login, password=hashed_password, name=name, roles=roles) User.get_collection().save(create_me) # Grant permissions permission_manager = factory.permission_manager() permission_manager.grant_automatic_permissions_for_user(create_me['login']) # Retrieve the user to return the SON object created = User.get_collection().find_one({'login': login}) created.pop('password') return created
def test_import_uploaded_unit(self): # Setup self.repo_manager.create_repo('repo-u') self.importer_manager.set_importer('repo-u', 'mock-importer', {}) key = {'key': 'value'} metadata = {'k1': 'v1'} importer_return_report = object() mock_plugins.MOCK_IMPORTER.upload_unit.return_value = importer_return_report upload_id = self.upload_manager.initialize_upload() file_path = self.upload_manager._upload_file_path(upload_id) fake_user = User('import-user', '') manager_factory.principal_manager().set_principal(principal=fake_user) # Test self.upload_manager.import_uploaded_unit('repo-u', 'mock-type', key, metadata, upload_id) # Verify call_args = mock_plugins.MOCK_IMPORTER.upload_unit.call_args[0] self.assertTrue(isinstance(call_args[0], Repository)) self.assertEqual(call_args[1], 'mock-type') self.assertEqual(call_args[2], key) self.assertEqual(call_args[3], metadata) self.assertEqual(call_args[4], file_path) conduit = call_args[5] self.assertTrue(isinstance(conduit, UploadConduit)) self.assertEqual(call_args[5].repo_id, 'repo-u') self.assertEqual(conduit.association_owner_type, OWNER_TYPE_USER) self.assertEqual(conduit.association_owner_id, fake_user.login) # Clean up mock_plugins.MOCK_IMPORTER.upload_unit.return_value = None manager_factory.principal_manager().set_principal(principal=None)
def test_import_uploaded_unit(self): self.repo_manager.create_repo('repo-u') self.importer_manager.set_importer('repo-u', 'mock-importer', {}) key = {'key': 'value'} metadata = {'k1': 'v1'} importer_return_report = object() mock_plugins.MOCK_IMPORTER.upload_unit.return_value = importer_return_report upload_id = self.upload_manager.initialize_upload() file_path = self.upload_manager._upload_file_path(upload_id) fake_user = User('import-user', '') manager_factory.principal_manager().set_principal(principal=fake_user) response = self.upload_manager.import_uploaded_unit( 'repo-u', 'mock-type', key, metadata, upload_id) # import_uploaded_unit() should have returned our importer_return_report self.assertTrue(response is importer_return_report) call_args = mock_plugins.MOCK_IMPORTER.upload_unit.call_args[0] self.assertTrue(isinstance(call_args[0], Repository)) self.assertEqual(call_args[1], 'mock-type') self.assertEqual(call_args[2], key) self.assertEqual(call_args[3], metadata) self.assertEqual(call_args[4], file_path) conduit = call_args[5] self.assertTrue(isinstance(conduit, UploadConduit)) self.assertEqual(call_args[5].repo_id, 'repo-u') # Clean up mock_plugins.MOCK_IMPORTER.upload_unit.return_value = None manager_factory.principal_manager().set_principal(principal=None)
def test_set_principal(self): user = User('test-user', 'test-password') task = Task( CallRequest(self.principal_manager.get_principal, principal=user)) task._run() self.assertEqual(user, task.call_report.result)