def test_upload_local_artifacts_invalid_value(self, zip_and_upload_mock): property_name = "property" resource_id = "resource_id" parent_dir = tempfile.gettempdir() with self.assertRaises(exceptions.InvalidLocalPathError): non_existent_file = "some_random_filename" resource_dict = {property_name: non_existent_file} upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) with self.assertRaises(exceptions.InvalidLocalPathError): non_existent_file = ["invalid datatype"] resource_dict = {property_name: non_existent_file} upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) zip_and_upload_mock.assert_not_called() self.s3_uploader_mock.upload_with_dedup.assert_not_called()
def test_upload_local_artifacts_local_file(self, zip_and_upload_mock): # Case 1: Artifact path is a relative path # Verifies that we package local artifacts appropriately property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" self.s3_uploader_mock.upload_with_dedup.return_value = expected_s3_url with tempfile.NamedTemporaryFile() as handle: # Artifact is a file in the temporary directory artifact_path = handle.name parent_dir = tempfile.gettempdir() resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, expected_s3_url) # Internally the method would convert relative paths to absolute # path, with respect to the parent directory absolute_artifact_path = make_abs_path(parent_dir, artifact_path) self.s3_uploader_mock.upload_with_dedup.assert_called_with(absolute_artifact_path) zip_and_upload_mock.assert_not_called()
def test_upload_local_artifacts_local_file(self, zip_and_upload_mock): # Case 1: Artifact path is a relative path # Verifies that we package local artifacts appropriately property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" self.s3_uploader_mock.upload_with_dedup.return_value = expected_s3_url with tempfile.NamedTemporaryFile() as handle: # Artifact is a file in the temporary directory artifact_path = handle.name parent_dir = tempfile.gettempdir() resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, expected_s3_url) # Internally the method would convert relative paths to absolute # path, with respect to the parent directory absolute_artifact_path = make_abs_path(parent_dir, artifact_path) self.s3_uploader_mock.upload_with_dedup.assert_called_with( absolute_artifact_path) zip_and_upload_mock.assert_not_called()
def test_upload_local_artifacts_s3_url(self, zip_and_upload_mock): property_name = "property" resource_id = "resource_id" object_s3_url = "s3://foo/bar?versionId=baz" # If URL is already S3 URL, this will be returned without zip/upload resource_dict = {property_name: object_s3_url} parent_dir = tempfile.gettempdir() result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, object_s3_url) zip_and_upload_mock.assert_not_called() self.s3_uploader_mock.upload_with_dedup.assert_not_called()
def test_upload_local_artifacts_no_path(self, zip_and_upload_mock): property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" zip_and_upload_mock.return_value = expected_s3_url # If you don't specify a path, we will default to Current Working Dir resource_dict = {} parent_dir = tempfile.gettempdir() result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, expected_s3_url) zip_and_upload_mock.assert_called_once_with(parent_dir, mock.ANY) self.s3_uploader_mock.upload_with_dedup.assert_not_called()
def test_upload_local_artifacts_local_folder(self, zip_and_upload_mock): property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" zip_and_upload_mock.return_value = expected_s3_url # Artifact path is a Directory with self.make_temp_dir() as artifact_path: # Artifact is a file in the temporary directory parent_dir = tempfile.gettempdir() resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, Mock()) self.assertEquals(result, expected_s3_url) absolute_artifact_path = make_abs_path(parent_dir, artifact_path) zip_and_upload_mock.assert_called_once_with( absolute_artifact_path, mock.ANY)
def test_upload_local_artifacts_local_file_abs_path(self, zip_and_upload_mock): # Case 2: Artifact path is an absolute path # Verifies that we package local artifacts appropriately property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" self.s3_uploader_mock.upload_with_dedup.return_value = expected_s3_url with tempfile.NamedTemporaryFile() as handle: parent_dir = tempfile.gettempdir() artifact_path = make_abs_path(parent_dir, handle.name) resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, expected_s3_url) self.s3_uploader_mock.upload_with_dedup.assert_called_with(artifact_path) zip_and_upload_mock.assert_not_called()
def test_upload_local_artifacts_local_file_abs_path( self, zip_and_upload_mock): # Case 2: Artifact path is an absolute path # Verifies that we package local artifacts appropriately property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" self.s3_uploader_mock.upload_with_dedup.return_value = expected_s3_url with tempfile.NamedTemporaryFile() as handle: parent_dir = tempfile.gettempdir() artifact_path = make_abs_path(parent_dir, handle.name) resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, self.s3_uploader_mock) self.assertEquals(result, expected_s3_url) self.s3_uploader_mock.upload_with_dedup.assert_called_with( artifact_path) zip_and_upload_mock.assert_not_called()
def test_upload_local_artifacts_local_folder(self, zip_and_upload_mock): property_name = "property" resource_id = "resource_id" expected_s3_url = "s3://foo/bar?versionId=baz" zip_and_upload_mock.return_value = expected_s3_url # Artifact path is a Directory with self.make_temp_dir() as artifact_path: # Artifact is a file in the temporary directory parent_dir = tempfile.gettempdir() resource_dict = {property_name: artifact_path} result = upload_local_artifacts(resource_id, resource_dict, property_name, parent_dir, Mock()) self.assertEquals(result, expected_s3_url) absolute_artifact_path = make_abs_path(parent_dir, artifact_path) zip_and_upload_mock.assert_called_once_with(absolute_artifact_path, mock.ANY)