def test_is_path_exists_SHOULD_return_true_if_exists(cwd): cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], credentials_path=TEST_CLOUD_CREDENTIALS_PATH, cwd=cwd) cloud_manager._get_project_bucket_path() credentials = copy.copy(cloud_manager.credentials) credentials.client_name = 'this_is_abstrac_client_path_173' sicloudman.CloudManager.touch_credentials(cwd, keywords=credentials.__dict__) cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) cloud_manager._get_project_bucket_path() with ftplib.FTP(cloud_manager.credentials.server, cloud_manager.credentials.username, cloud_manager.credentials.password) as ftp_conn: project_bucket_path = cloud_manager._get_project_bucket_path() assert cloud_manager._is_path_exists(ftp_conn, project_bucket_path) == False
def get_updated_cloud_manager(cwd, bucket_paths, buckets): artifacts_path = cwd / 'artifacts' artifacts_path.mkdir() cloud_manager = sicloudman.CloudManager( artifacts_path, [sicloudman.Bucket(name='release', keywords=['_release'])], credentials_path=TEST_CLOUD_CREDENTIALS_PATH, cwd=cwd) cloud_manager._get_project_bucket_path() credentials = copy.copy(cloud_manager.credentials) credentials.main_bucket_path = bucket_paths.main_bucket_path credentials.client_name = bucket_paths.client_name credentials.project_name = bucket_paths.project_name sicloudman.CloudManager.touch_credentials(cwd, keywords=credentials.__dict__) cloud_manager = sicloudman.CloudManager(artifacts_path, buckets, cwd=cwd) cloud_manager._get_project_bucket_path() with ftplib.FTP(cloud_manager.credentials.server, cloud_manager.credentials.username, cloud_manager.credentials.password) as ftp_conn: main_bucket_path = cloud_manager.credentials.main_bucket_path if main_bucket_path == cloud_manager._get_project_bucket_path().parent: path_to_rm = cloud_manager._get_project_bucket_path() else: path_to_rm = cloud_manager._get_project_bucket_path().parent if cloud_manager._is_path_exists(ftp_conn, path_to_rm): ftp_rmtree(ftp_conn, path_to_rm.as_posix()) return cloud_manager, artifacts_path
def test_check_credentials_SHOULD_raise_error_WHEN_no_credentials_file(cwd): cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) with pytest.raises(sicloudman.CredentialsNotFoundError): cloud_manager._get_project_bucket_path()
def test_CloudManager_init_SHOULD_not_raise_error_WHEN_no_credentials_file( cwd): try: sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) except Exception as e: assert 0, f'Unexpected error occured: {e}'
def test_CloudManager_init_SHOULD_raise_error_when_credentials_are_not_credentials( cwd): with pytest.raises(sicloudman.TypeError) as exc: sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], credentials={'server': 'serverro'}, cwd=cwd) assert 'not an instance' in str(exc.value)
def test_get_project_bucket_path(credentials, expected_path, cwd): sicloudman.CloudManager.touch_credentials(cwd, keywords=credentials.__dict__) cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) path = cloud_manager._get_project_bucket_path().as_posix() assert path == expected_path
def test_get_bucket_name_from_filename_SHOULD_return_bucket_name_WHEN_one_keyword( cwd): cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], credentials_path=TEST_CLOUD_CREDENTIALS_PATH, cwd=cwd) bucket = cloud_manager._get_bucket_name_from_filename( 'sample_file_release.whl') assert bucket == 'release'
def test_read_credentials_SHOULD_rise_error_when_field_has_invalid_value(cwd): credentials_expected = sicloudman.Credentials( server='', username='******', password='******', main_bucket_path='/', client_name='client', project_name='project', ) sicloudman.CloudManager.touch_credentials( cwd, keywords=credentials_expected.__dict__) with pytest.raises(sicloudman.CredentialsError): cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) cloud_manager._get_project_bucket_path()
def test_check_credentials_SHOULD_not_raise_error_WHEN_credentials_file_is_empty_AND_only_CloudManager_init( cwd): sicloudman.CloudManager.touch_credentials( cwd, keywords=sicloudman.Credentials( server='my_server', username='******', password='******', main_bucket_path='main_bucket', client_name='client', project_name='', ).__dict__) try: sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) except Exception as e: assert 0, f'Unexpected error occured: {e}'
def test_read_credentials_SHOULD_not_rise_error_when_extra_field_empty(cwd): credentials_expected = sicloudman.Credentials( server='my_server', username='******', password='******', main_bucket_path='main_bucket', client_name='', project_name='', ) sicloudman.CloudManager.touch_credentials( cwd, keywords=credentials_expected.__dict__) cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) cloud_manager._get_project_bucket_path() assert set(cloud_manager.credentials.__dict__) == set( credentials_expected.__dict__)
def test_touch_and_read_credentials_WHEN_keywords(cwd): credentials_expected = sicloudman.Credentials( server='my_server', username='******', password='******', main_bucket_path='main_bucket', client_name='client', project_name='project', ) file_path = sicloudman.CloudManager.touch_credentials( cwd, keywords=credentials_expected.__dict__) file_content = file_path.read_text() print(file_content) cloud_manager = sicloudman.CloudManager( 'artifacts', [sicloudman.Bucket(name='release', keywords=['_release'])], cwd=cwd) cloud_manager._get_project_bucket_path() pprint(cloud_manager.credentials.__dict__) assert set(cloud_manager.credentials.__dict__) == set( credentials_expected.__dict__)
def test_upload_file_SHOULD_upload_file_properly_WHEN_credentials_as_parameter( cwd): bucket_paths = SimpleNamespace(main_bucket_path='test_cloud', client_name='sicloudman_client', project_name='sicloudman_project') cloud_manager, artifacts_path = get_updated_cloud_manager( cwd, bucket_paths, [ sicloudman.Bucket(name='release', keywords=['_release']), sicloudman.Bucket(name='client', keywords=['_client']) ]) credentials = cloud_manager.credentials cloud_manager = sicloudman.CloudManager( artifacts_path, [sicloudman.Bucket(name='release', keywords=['_release'])], credentials=credentials, cwd=cwd) Path(artifacts_path / 'test_1_release.txt').touch() Path(artifacts_path / 'test_1.whl').touch() uploaded_file_path = cloud_manager.upload_file(file_path=artifacts_path / 'test_1_release.txt', bucket_name='release', prompt=False) cloud_files = cloud_manager.list_cloud() assert set(cloud_files.release) == {'test_1_release.txt'} assert cloud_files.release.__len__() == 1 assert (cloud_manager._get_project_bucket_path() / 'release' / 'test_1_release.txt').as_posix() == uploaded_file_path with ftplib.FTP(cloud_manager.credentials.server, cloud_manager.credentials.username, cloud_manager.credentials.password) as ftp_conn: ftp_rmtree(ftp_conn, cloud_manager._get_project_bucket_path().parent.as_posix())