def test_stat(self): a = self.cls() P = artifactory.ArtifactoryPath # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) a.rest_get = MM(return_value=(self.file_stat, 200)) s = a.stat(p) self.assertEqual( s.ctime, dateutil.parser.parse("2014-02-24T21:20:59.999+04:00") ) self.assertEqual( s.mtime, dateutil.parser.parse("2014-02-24T21:20:36.000+04:00") ) self.assertEqual(s.created_by, "someuser") self.assertEqual(s.modified_by, "anotheruser") self.assertEqual(s.mime_type, "application/octet-stream") self.assertEqual(s.size, 26776462) self.assertEqual(s.sha1, "fc6c9e8ba6eaca4fa97868ac900570282133c095") self.assertEqual( s.sha256, "fc6c9e8ba6eaca4fa97868ac900570282133c095fc6c9e8ba6eaca4fa97868ac900570282133c095", ) self.assertEqual(s.md5, "2af7d54a09e9c36d704cb3a2de28aff3") self.assertEqual(s.is_dir, False) # Directory p = P("http://artifactory.local/artifactory/api/storage/libs-release-local") a.rest_get = MM(return_value=(self.dir_stat, 200)) s = a.stat(p) self.assertEqual( s.ctime, dateutil.parser.parse("2014-02-18T15:35:29.361+04:00") ) self.assertEqual( s.mtime, dateutil.parser.parse("2014-02-18T15:35:29.361+04:00") ) self.assertEqual(s.created_by, None) self.assertEqual(s.modified_by, None) self.assertEqual(s.mime_type, None) self.assertEqual(s.size, 0) self.assertEqual(s.sha1, None) self.assertEqual(s.sha256, None) self.assertEqual(s.md5, None) self.assertEqual(s.is_dir, True)
def test_listdir(self): a = self.cls() P = artifactory.ArtifactoryPath # Directory p = P("http://artifactory.local/artifactory/api/storage/libs-release-local") a.rest_get = MM(return_value=(self.dir_stat, 200)) children = a.listdir(p) self.assertEqual(children, [".index", "com"]) # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) a.rest_get = MM(return_value=(self.file_stat, 200)) self.assertRaises(OSError, a.listdir, p)
def test_set_properties_without_remove(self): a = self.cls() P = artifactory.ArtifactoryPath properties = { 'test': ['test_property'], "time": ["2018-01-16 12:17:44.135143"], "addthis": ['addthis'], "removethis": ["removethis_property"], } # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) p._accessor.rest_get = MM(return_value=(self.property_data, 200)) p._accessor.rest_del = MM(return_value=('', 204)) p._accessor.rest_put = MM(return_value=('', 204)) p.properties = properties # Must delete only removed property p._accessor.rest_del.assert_not_called()
def test_set_properties(self): a = self.cls() P = artifactory.ArtifactoryPath properties = { 'test': ['test_property'], "time": ["2018-01-16 12:17:44.135143"], "addthis": ['addthis'], } # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) p._accessor.rest_get = MM(return_value=(self.property_data, 200)) p._accessor.rest_del = MM(return_value=('', 204)) p._accessor.rest_put = MM(return_value=('', 204)) p.properties = properties # Must delete only removed property p._accessor.rest_del.assert_called_once() calls = p._accessor.rest_del.mock_calls kwargs = calls[0][2] # '', args, kwargs, _ properties_del = kwargs['params']['properties'] self.assertEqual(properties_del, 'removethis') # Must put all property p._accessor.rest_put.assert_called_once() calls = p._accessor.rest_put.mock_calls kwargs = calls[0][2] # '', args, kwargs, _ properties_put = kwargs['params']['properties'] self.assertEqual( properties_put, "addthis=addthis;test=test_property;time=2018-01-16 12:17:44.135143" )
def test_stat_no_sha256(self): a = self.cls() P = artifactory.ArtifactoryPath # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) file_stat = """ { "repo" : "ext-release-local", "path" : "/org/company/tool/1.0/tool-1.0.tar.gz", "created" : "2014-02-24T21:20:59.999+04:00", "createdBy" : "someuser", "lastModified" : "2014-02-24T21:20:36.000+04:00", "modifiedBy" : "anotheruser", "lastUpdated" : "2014-02-24T21:20:36.000+04:00", "downloadUri" : "http://artifactory.local/artifactory/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz", "mimeType" : "application/octet-stream", "size" : "26776462", "checksums" : { "sha1" : "fc6c9e8ba6eaca4fa97868ac900570282133c095", "md5" : "2af7d54a09e9c36d704cb3a2de28aff3" }, "originalChecksums" : { "sha1" : "fc6c9e8ba6eaca4fa97868ac900570282133c095", "md5" : "2af7d54a09e9c36d704cb3a2de28aff3" }, "uri" : "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" } """ a.rest_get = MM(return_value=(file_stat, 200)) s = a.stat(p) self.assertEqual( s.ctime, dateutil.parser.parse("2014-02-24T21:20:59.999+04:00") ) self.assertEqual( s.mtime, dateutil.parser.parse("2014-02-24T21:20:36.000+04:00") ) self.assertEqual(s.created_by, "someuser") self.assertEqual(s.modified_by, "anotheruser") self.assertEqual(s.mime_type, "application/octet-stream") self.assertEqual(s.size, 26776462) self.assertEqual(s.sha1, "fc6c9e8ba6eaca4fa97868ac900570282133c095") self.assertEqual(s.sha256, None)
def test_get_properties(self): a = self.cls() P = artifactory.ArtifactoryPath properties = { 'test': ['test_property'], 'removethis': ['removethis_property'], "time": ["2018-01-16 12:17:44.135143"], } # Regular File p = P( "http://artifactory.local/artifactory/api/storage/ext-release-local/org/company/tool/1.0/tool-1.0.tar.gz" ) p._accessor.rest_get = MM(return_value=(self.property_data, 200)) self.assertEqual(p.properties, properties)
def test_deploy(self): a = self.cls() P = artifactory.ArtifactoryPath p = P("http://b/artifactory/c/d") params = {"foo": "bar", "baz": "quux"} a.rest_put_stream = MM(return_value=("OK", 200)) f = io.StringIO() a.deploy(p, f, parameters=params) url = "http://b/artifactory/c/d;baz=quux;foo=bar" a.rest_put_stream.assert_called_with( url, f, headers={}, session=p.session, verify=True, cert=None, timeout=None )
def test_deploy(self): a = self.cls() P = artifactory.ArtifactoryPath p = P("http://b/artifactory/c/d") params = {'foo': 'bar', 'baz': 'quux'} a.rest_put_stream = MM(return_value=('OK', 200)) f = io.StringIO() a.deploy(p, f, parameters=params) url = "http://b/artifactory/c/d;baz=quux;foo=bar" a.rest_put_stream.assert_called_with(url, f, headers={}, auth=None, verify=True, cert=None)