class TestFileStorage(unittest.TestCase): """ Tests for storing packages as local files """ def setUp(self): super(TestFileStorage, self).setUp() self.tempdir = tempfile.mkdtemp() settings = {"storage.dir": self.tempdir} kwargs = FileStorage.configure(settings) self.request = MagicMock() self.storage = FileStorage(self.request, **kwargs) def tearDown(self): super(TestFileStorage, self).tearDown() shutil.rmtree(self.tempdir) def test_upload(self): """ Uploading package saves file """ package = make_package() datastr = "foobar" data = StringIO(datastr) self.storage.upload(package, data) filename = self.storage.get_path(package) self.assertTrue(os.path.exists(filename)) with open(filename, "r") as ifile: self.assertEqual(ifile.read(), "foobar") def test_list(self): """ Can iterate over uploaded packages """ package = make_package() path = self.storage.get_path(package) os.makedirs(os.path.dirname(path)) with open(path, "w") as ofile: ofile.write("foobar") pkg = list(self.storage.list(Package))[0] self.assertEquals(pkg.name, package.name) self.assertEquals(pkg.version, package.version) self.assertEquals(pkg.filename, package.filename) def test_delete(self): """ delete() should remove package from storage """ package = make_package() path = self.storage.get_path(package) os.makedirs(os.path.dirname(path)) with open(path, "w") as ofile: ofile.write("foobar") self.storage.delete(package) self.assertFalse(os.path.exists(path)) def test_create_package_dir(self): """ configure() will create the package dir if it doesn't exist """ tempdir = tempfile.mkdtemp() os.rmdir(tempdir) settings = {"storage.dir": tempdir} FileStorage.configure(settings) try: self.assertTrue(os.path.exists(tempdir)) finally: os.rmdir(tempdir)
class TestFileStorage(unittest.TestCase): """Tests for storing packages as local files""" def setUp(self): super(TestFileStorage, self).setUp() self.tempdir = tempfile.mkdtemp() settings = {"storage.dir": self.tempdir} kwargs = FileStorage.configure(settings) self.request = MagicMock() self.storage = FileStorage(self.request, **kwargs) def tearDown(self): super(TestFileStorage, self).tearDown() shutil.rmtree(self.tempdir) def test_upload(self): """Uploading package saves file""" package = make_package(requires_python="3.6") datastr = b"foobar" data = BytesIO(datastr) self.storage.upload(package, data) filename = self.storage.get_path(package) self.assertTrue(os.path.exists(filename)) with open(filename, "r") as ifile: self.assertEqual(ifile.read(), "foobar") meta_file = self.storage.get_metadata_path(package) self.assertTrue(os.path.exists(meta_file)) with open(meta_file, "r") as mfile: self.assertEqual(json.loads(mfile.read()), package.get_metadata()) def test_list(self): """Can iterate over uploaded packages""" package = make_package() path = self.storage.get_path(package) meta_file = self.storage.get_metadata_path(package) os.makedirs(os.path.dirname(path)) with open(path, "w") as ofile: ofile.write("foobar") with open(meta_file, "w") as mfile: mfile.write(json.dumps({"summary": package.summary})) pkg = list(self.storage.list(Package))[0] self.assertEqual(pkg.name, package.name) self.assertEqual(pkg.version, package.version) self.assertEqual(pkg.filename, package.filename) self.assertEqual(pkg.summary, package.summary) def test_delete(self): """delete() should remove package from storage""" package = make_package() path = self.storage.get_path(package) meta_path = self.storage.get_metadata_path(package) os.makedirs(os.path.dirname(path)) with open(path, "w") as ofile: ofile.write("foobar") with open(meta_path, "w") as mfile: mfile.write("foobar") self.storage.delete(package) self.assertFalse(os.path.exists(path)) self.assertFalse(os.path.exists(meta_path)) def test_create_package_dir(self): """configure() will create the package dir if it doesn't exist""" tempdir = tempfile.mkdtemp() os.rmdir(tempdir) settings = {"storage.dir": tempdir} FileStorage.configure(settings) try: self.assertTrue(os.path.exists(tempdir)) finally: os.rmdir(tempdir) def test_check_health(self): """Base check_health returns True""" ok, msg = self.storage.check_health() self.assertTrue(ok)
class TestFileStorage(unittest.TestCase): """ Tests for storing packages as local files """ def setUp(self): super(TestFileStorage, self).setUp() self.tempdir = tempfile.mkdtemp() config = MagicMock() config.get_settings.return_value = { 'storage.dir': self.tempdir, } FileStorage.configure(config) self.request = MagicMock() self.storage = FileStorage(self.request) def tearDown(self): super(TestFileStorage, self).tearDown() shutil.rmtree(self.tempdir) def test_upload(self): """ Uploading package saves file """ name, version, path = 'a', '1', 'my/path.tar.gz' datastr = 'foobar' data = StringIO(datastr) path = self.storage.upload(name, version, path, data) filename = os.path.join(self.tempdir, 'a', '1', 'path.tar.gz') self.assertTrue(os.path.exists(filename)) with open(filename, 'r') as ifile: self.assertEqual(ifile.read(), 'foobar') def test_list(self): """ Can iterate over uploaded packages """ name, version, shortpath = 'a', '1', 'path.tar.gz' path = os.path.join(name, version, shortpath) filename = os.path.join(self.tempdir, path) os.makedirs(os.path.dirname(filename)) with open(filename, 'w') as ofile: ofile.write('foobar') package = list(self.storage.list(Package))[0] self.assertEquals(package.name, name) self.assertEquals(package.version, version) self.assertEquals(package.path, path) def test_get_url(self): """ Test package url generation """ package = make_package() self.request.app_url.side_effect = lambda *x: '/'.join(x) url = self.storage.get_url(package) expected = 'api/package/%s/%s/download/%s' % (package.name, package.version, package.filename) self.assertEqual(url, expected) def test_delete(self): """ delete() should remove package from storage """ name, version, shortpath = 'a', '1', 'path.tar.gz' path = os.path.join(name, version, shortpath) filename = os.path.join(self.tempdir, path) os.makedirs(os.path.dirname(filename)) with open(filename, 'w') as ofile: ofile.write('foobar') self.storage.delete(path) self.assertFalse(os.path.exists(filename)) def test_create_package_dir(self): """ configure() will create the package dir if it doesn't exist """ tempdir = tempfile.mkdtemp() os.rmdir(tempdir) config = MagicMock() config.get_settings.return_value = { 'storage.dir': tempdir, } FileStorage.configure(config) try: self.assertTrue(os.path.exists(tempdir)) finally: os.rmdir(tempdir)
class TestFileStorage(unittest.TestCase): """ Tests for storing packages as local files """ def setUp(self): super(TestFileStorage, self).setUp() self.tempdir = tempfile.mkdtemp() settings = { 'storage.dir': self.tempdir, } kwargs = FileStorage.configure(settings) self.request = MagicMock() self.storage = FileStorage(self.request, **kwargs) def tearDown(self): super(TestFileStorage, self).tearDown() shutil.rmtree(self.tempdir) def test_upload(self): """ Uploading package saves file """ package = make_package() datastr = 'foobar' data = StringIO(datastr) self.storage.upload(package, data) filename = self.storage.get_path(package) self.assertTrue(os.path.exists(filename)) with open(filename, 'r') as ifile: self.assertEqual(ifile.read(), 'foobar') def test_list(self): """ Can iterate over uploaded packages """ package = make_package() path = self.storage.get_path(package) os.makedirs(os.path.dirname(path)) with open(path, 'w') as ofile: ofile.write('foobar') pkg = list(self.storage.list(Package))[0] self.assertEquals(pkg.name, package.name) self.assertEquals(pkg.version, package.version) self.assertEquals(pkg.filename, package.filename) def test_get_url(self): """ Test package url generation """ package = make_package() self.request.app_url.side_effect = lambda *x: '/'.join(x) url, _ = self.storage.get_url(package) expected = 'api/package/%s/%s' % (package.name, package.filename) self.assertEqual(url, expected) def test_delete(self): """ delete() should remove package from storage """ package = make_package() path = self.storage.get_path(package) os.makedirs(os.path.dirname(path)) with open(path, 'w') as ofile: ofile.write('foobar') self.storage.delete(package) self.assertFalse(os.path.exists(path)) def test_create_package_dir(self): """ configure() will create the package dir if it doesn't exist """ tempdir = tempfile.mkdtemp() os.rmdir(tempdir) settings = { 'storage.dir': tempdir, } FileStorage.configure(settings) try: self.assertTrue(os.path.exists(tempdir)) finally: os.rmdir(tempdir)
class TestFileStorage(unittest.TestCase): """ Tests for storing packages as local files """ def setUp(self): super(TestFileStorage, self).setUp() self.tempdir = tempfile.mkdtemp() settings = { 'storage.dir': self.tempdir, } kwargs = FileStorage.configure(settings) self.request = MagicMock() self.storage = FileStorage(self.request, **kwargs) def tearDown(self): super(TestFileStorage, self).tearDown() shutil.rmtree(self.tempdir) def test_upload(self): """ Uploading package saves file """ package = make_package() datastr = 'foobar' data = StringIO(datastr) self.storage.upload(package, data) filename = self.storage.get_path(package) self.assertTrue(os.path.exists(filename)) with open(filename, 'r') as ifile: self.assertEqual(ifile.read(), 'foobar') meta_file = self.storage.get_metadata_path(package) self.assertTrue(os.path.exists(meta_file)) with open(meta_file, 'r') as mfile: self.assertEqual(json.loads(mfile.read()), {'summary': package.summary}) def test_list(self): """ Can iterate over uploaded packages """ package = make_package() path = self.storage.get_path(package) meta_file = self.storage.get_metadata_path(package) os.makedirs(os.path.dirname(path)) with open(path, 'w') as ofile: ofile.write('foobar') with open(meta_file, 'w') as mfile: mfile.write(json.dumps({'summary': package.summary})) pkg = list(self.storage.list(Package))[0] self.assertEquals(pkg.name, package.name) self.assertEquals(pkg.version, package.version) self.assertEquals(pkg.filename, package.filename) self.assertEquals(pkg.summary, package.summary) def test_delete(self): """ delete() should remove package from storage """ package = make_package() path = self.storage.get_path(package) meta_path = self.storage.get_metadata_path(package) os.makedirs(os.path.dirname(path)) with open(path, 'w') as ofile: ofile.write('foobar') with open(meta_path, 'w') as mfile: mfile.write('foobar') self.storage.delete(package) self.assertFalse(os.path.exists(path)) self.assertFalse(os.path.exists(meta_path)) def test_create_package_dir(self): """ configure() will create the package dir if it doesn't exist """ tempdir = tempfile.mkdtemp() os.rmdir(tempdir) settings = { 'storage.dir': tempdir, } FileStorage.configure(settings) try: self.assertTrue(os.path.exists(tempdir)) finally: os.rmdir(tempdir)