def test_analyze_layer_missing_storage(self): """ Tests trying to analyze a layer with missing storage. """ layer = model.tag.get_tag_image(ADMIN_ACCESS_USER, SIMPLE_REPO, "latest", include_storage=True) self.assertFalse(layer.security_indexed) self.assertEquals(-1, layer.security_indexed_engine) # Delete the storage for the layer. path = model.storage.get_layer_path(layer.storage) locations = app.config["DISTRIBUTED_STORAGE_PREFERENCE"] storage.remove(locations, path) storage.remove(locations, "all_files_exist") with fake_security_scanner() as security_scanner: analyzer = LayerAnalyzer(app.config, self.api) analyzer.analyze_recursively(layer) layer = model.tag.get_tag_image(ADMIN_ACCESS_USER, SIMPLE_REPO, "latest") self.assertAnalyzed(layer, security_scanner, False, 1)
def process_queue_item(self, job_details): logger.debug('Got chunk cleanup queue item: %s', job_details) storage_location = job_details['location'] storage_path = job_details['path'] if not storage.exists([storage_location], storage_path): logger.debug('Chunk already deleted') return try: storage.remove([storage_location], storage_path) except IOError: raise JobException()
def test_export_logs_failure(initialized_db): # Make all uploads fail. test_storage.put_content("local_us", "except_upload", b"true") repo = model.repository.get_repository("devtable", "simple") user = model.user.get_user("devtable") worker = ExportActionLogsWorker(None) called = [{}] @urlmatch(netloc=r"testcallback") def handle_request(url, request): called[0] = json.loads(request.body) return {"status_code": 200, "content": "{}"} def format_date(datetime): return datetime.strftime("%m/%d/%Y") now = datetime.now() with HTTMock(handle_request): with pytest.raises(IOError): worker._process_queue_item( { "export_id": "someid", "repository_id": repo.id, "namespace_id": repo.namespace_user.id, "namespace_name": "devtable", "repository_name": "simple", "start_time": format_date(now + timedelta(days=-10)), "end_time": format_date(now + timedelta(days=10)), "callback_url": "http://testcallback/", "callback_email": None, }, test_storage, ) test_storage.remove("local_us", "except_upload") assert called[0] assert called[0]["export_id"] == "someid" assert called[0]["status"] == "failed"
def test_export_logs_failure(initialized_db): # Make all uploads fail. test_storage.put_content('local_us', 'except_upload', 'true') repo = model.repository.get_repository('devtable', 'simple') user = model.user.get_user('devtable') worker = ExportActionLogsWorker(None) called = [{}] @urlmatch(netloc=r'testcallback') def handle_request(url, request): called[0] = json.loads(request.body) return {'status_code': 200, 'content': '{}'} def format_date(datetime): return datetime.strftime("%m/%d/%Y") now = datetime.now() with HTTMock(handle_request): with pytest.raises(IOError): worker._process_queue_item( { 'export_id': 'someid', 'repository_id': repo.id, 'namespace_id': repo.namespace_user.id, 'namespace_name': 'devtable', 'repository_name': 'simple', 'start_time': format_date(now + timedelta(days=-10)), 'end_time': format_date(now + timedelta(days=10)), 'callback_url': 'http://testcallback/', 'callback_email': None, }, test_storage) test_storage.remove('local_us', 'except_upload') assert called[0] assert called[0][u'export_id'] == 'someid' assert called[0][u'status'] == 'failed'
def remove_node(ip_address): target_node = storage.get(Node, ip_address=ip_address) storage.remove(target_node)
def tearDown(self): storage.remove(["local_us"], "supports_direct_download") storage.remove(["local_us"], "all_files_exist") finished_database_for_testing(self) self.ctx.__exit__(True, None, None)
def tearDown(self): storage.remove(['local_us'], 'supports_direct_download') storage.remove(['local_us'], 'all_files_exist') finished_database_for_testing(self) self.ctx.__exit__(True, None, None)