blob: 5c8e2a0ffccfc8215def70f0c669d0eeabe6e577 [file] [log] [blame]
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
from pyfakefs import fake_filesystem_unittest
from dependency_manager import uploader
class CloudStorageUploaderTest(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
self.bucket = 'cloud_storage_bucket'
self.local_path = os.path.abspath(os.path.join('path', 'to', 'dependency'))
self.fs.CreateFile(self.local_path)
self.remote_path = 'config_folder/remote_path'
def testCloudStorageUploaderMissingData(self):
self.assertRaises(ValueError, uploader.CloudStorageUploader,
None, self.remote_path, self.local_path)
self.assertRaises(ValueError, uploader.CloudStorageUploader,
self.bucket, None, self.local_path)
self.assertRaises(ValueError, uploader.CloudStorageUploader,
self.bucket, self.remote_path, None)
def testCloudStorageUploaderLocalFileMissing(self):
self.fs.RemoveObject(self.local_path)
self.assertRaises(ValueError, uploader.CloudStorageUploader,
self.bucket, self.remote_path, self.local_path)
def testCloudStorageUploaderCreation(self):
upload_data = uploader.CloudStorageUploader(
self.bucket, self.remote_path, self.local_path)
expected_bucket = self.bucket
expected_remote_path = self.remote_path
expected_cs_backup_path = '%s.old' % expected_remote_path
expected_local_path = self.local_path
self.assertEqual(expected_bucket, upload_data._cs_bucket)
self.assertEqual(expected_remote_path, upload_data._cs_remote_path)
self.assertEqual(expected_local_path, upload_data._local_path)
self.assertEqual(expected_cs_backup_path, upload_data._cs_backup_path)
def testCloudStorageUploaderEquality(self):
upload_data = uploader.CloudStorageUploader(
self.bucket, self.remote_path, self.local_path)
upload_data_exact = uploader.CloudStorageUploader(
self.bucket, self.remote_path, self.local_path)
upload_data_equal = uploader.CloudStorageUploader(
'cloud_storage_bucket',
'config_folder/remote_path',
os.path.abspath(os.path.join('path', 'to', 'dependency')))
self.assertEqual(upload_data, upload_data)
self.assertEqual(upload_data, upload_data_exact)
self.assertEqual(upload_data_exact, upload_data)
self.assertEqual(upload_data, upload_data_equal)
self.assertEqual(upload_data_equal, upload_data)
def testCloudStorageUploaderInequality(self):
new_local_path = os.path.abspath(os.path.join('new', 'local', 'path'))
self.fs.CreateFile(new_local_path)
new_bucket = 'new_bucket'
new_remote_path = 'new_remote/path'
upload_data = uploader.CloudStorageUploader(
self.bucket, self.remote_path, self.local_path)
upload_data_all_different = uploader.CloudStorageUploader(
new_bucket, new_remote_path, new_local_path)
upload_data_different_bucket = uploader.CloudStorageUploader(
new_bucket, self.remote_path, self.local_path)
upload_data_different_remote_path = uploader.CloudStorageUploader(
self.bucket, new_remote_path, self.local_path)
upload_data_different_local_path = uploader.CloudStorageUploader(
self.bucket, self.remote_path, new_local_path)
self.assertNotEqual(upload_data, 'a string!')
self.assertNotEqual(upload_data, 0)
self.assertNotEqual(upload_data, 2354)
self.assertNotEqual(upload_data, None)
self.assertNotEqual(upload_data, upload_data_all_different)
self.assertNotEqual(upload_data_all_different, upload_data)
self.assertNotEqual(upload_data, upload_data_different_bucket)
self.assertNotEqual(upload_data_different_bucket, upload_data)
self.assertNotEqual(upload_data, upload_data_different_remote_path)
self.assertNotEqual(upload_data_different_remote_path, upload_data)
self.assertNotEqual(upload_data, upload_data_different_local_path)
self.assertNotEqual(upload_data_different_local_path, upload_data)
#TODO: write unittests for upload and rollback