示例#1
0
    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)
示例#2
0
    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()
示例#3
0
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'
示例#5
0
def remove_node(ip_address):
    target_node = storage.get(Node, ip_address=ip_address)
    storage.remove(target_node)
示例#6
0
    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)
示例#7
0
    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)