def test_should_return_error_when_credentials_not_provided():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemFile(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="file",
        url="https://intranet.gradiant.org/nexus/repository/raw-dataset-biometrics/alice/gcs-credentials.json",
        auth_required=True,
        credentials_env="LOL",
        unzip=False,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert_failure(result, value_is_instance_of=CrendentialsEnvError)
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
def test_should_return_error_when_credentials_not_define():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemBucket(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="bucket",
        url="gs://aliceonboarding/-AmBH6e1JnNcFPej9Bcvp5EJRCI=.jpg",
        auth_required=True,
        credentials_env="SOME_CREDENTIAL",
        unzip=False,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert_failure(result)
    assert isinstance(result.value, CrendentialsEnvError)
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
def test_should_return_error_when_wrong_bucket_name():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemBucket(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="bucket",
        url="gs://soyunbucket/-AmBH6e1JnNcFPej9Bcvp5EJRCI=.jpg",
        auth_required=True,
        credentials_env="GCS_CREDENTIALS",
        unzip=False,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert_failure(result)
    assert isinstance(result.value, BlobNotFoundError)
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
def test_should_download_a_valid_bucket_with_auth_and_overwrite():
    file_setuper = SetupItemBucket(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="bucket",
        url="gs://aliceonboarding/-AmBH6e1JnNcFPej9Bcvp5EJRCI=.jpg",
        auth_required=True,
        credentials_env="GCS_CREDENTIALS",
        unzip=False,
        overwrite=True)
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())

    assert_success(result)
    assert os.path.exists(
        "test_deps/test-item/-AmBH6e1JnNcFPej9Bcvp5EJRCI=.jpg")
    shutil.rmtree("test_deps", ignore_errors=False, onerror=None)
def test_should_return_error_from_item_setuper():
    dependency_config = DependencyConfig(
        type="file",
        url=
        "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
        auth_required=True,
        credentials_env="SOME_CREDENTIAL",
        unzip=False,
    )
    setup_config = SetupConfig(deps={"test-item": dependency_config},
                               output="test-deps")
    setup_service = SetupService(setup_config, EmojisLogger())
    result = setup_service.execute()
    assert result.is_failure
    shutil.rmtree("test-deps", ignore_errors=False, onerror=None)
def test_should_return_error_when_wrong_url_zip_file():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemFile(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="file",
        url="https://file-examples.com/wp-content/uploads/2017/02/soyunarchivo.zip",
        auth_required=False,
        credentials_env=None,
        unzip=True,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert result.is_failure
    assert isinstance(result.value, BadZipFileError)
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
def test_should_download_a_valid_file_without_auth():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemFile(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="file",
        url="https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
        auth_required=False,
        credentials_env=None,
        unzip=False,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert_success(result)
    assert os.path.exists("test_deps/test-item/dummy.pdf")
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
def test_should_return_error_when_type_is_not_supported():
    dependency_config = DependencyConfig(
        type="some-type",
        url=
        "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
        auth_required=False,
        credentials_env=None,
        unzip=False,
    )
    setup_config = SetupConfig(deps={"test-item": dependency_config},
                               output="test-deps")
    setup_service = SetupService(setup_config, EmojisLogger())
    result = setup_service.execute()
    assert result.is_failure
    assert isinstance(result.value, ItemTypeNotSupportedError)
    shutil.rmtree("test-deps", ignore_errors=False, onerror=None)
def test_should_download_dependency_properly():
    dependency_config = DependencyConfig(
        type="file",
        url=
        "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
        auth_required=False,
        credentials_env=None,
        unzip=False,
    )
    setup_config = SetupConfig(deps={"test-item": dependency_config},
                               output="test-deps")
    setup_service = SetupService(setup_config, EmojisLogger())
    result = setup_service.execute()
    assert result.is_success
    assert os.path.exists("test-deps/test-item/dummy.pdf")
    shutil.rmtree("test-deps", ignore_errors=False, onerror=None)
def test_should_download_a_valid_zip_without_auth():
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)

    file_setuper = SetupItemFile(base_path="test_deps")
    dependency_config = DependencyConfig(
        type="file",
        url="https://file-examples.com/wp-content/uploads/2017/02/zip_2MB.zip",
        auth_required=False,
        credentials_env=None,
        unzip=True,
    )
    result = file_setuper.run("test-item", dependency_config, EmojisLogger())
    assert_success(result)
    assert len(os.listdir("test_deps/test-item")) > 0
    assert not os.path.exists("test_deps/test-item/zip_2MB.zip")
    shutil.rmtree("test_deps", ignore_errors=True, onerror=None)
Example #11
0
    def lume(config: Config):

        default_logger = EmojisLogger()
        default_executor_service = PopenExecutorService(logger=default_logger)
        default_detach_executor_service = DetachPopenExecutorService(
            logger=default_logger
        )
        default_detach_killer_service = PopenKillerService(logger=default_logger)
        setup_config = config.steps["setup"] if "setup" in config.steps else None
        default_setup_service = SetupService(
            setup_config=setup_config, logger=default_logger
        )

        return LumeUseCase(
            config=config,
            executor_service=default_executor_service,
            detach_executor_service=default_detach_executor_service,
            detach_killer_service=default_detach_killer_service,
            setup_service=default_setup_service,
            logger=default_logger,
        )