X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3e3389504c6841e160ac086328693001261e016d..63871346153fea194b169eec38f6efae3061ebf6:/sdk/python/tests/test_keep_client.py diff --git a/sdk/python/tests/test_keep_client.py b/sdk/python/tests/test_keep_client.py index 6d0470ad41..8706e2193b 100644 --- a/sdk/python/tests/test_keep_client.py +++ b/sdk/python/tests/test_keep_client.py @@ -2,9 +2,10 @@ # # ARVADOS_API_TOKEN=abc ARVADOS_API_HOST=arvados.local python -m unittest discover +import os import unittest + import arvados -import os import run_test_server class KeepTestCase(unittest.TestCase): @@ -35,9 +36,10 @@ class KeepTestCase(unittest.TestCase): def test_KeepBasicRWTest(self): foo_locator = arvados.Keep.put('foo') - self.assertEqual(foo_locator, - 'acbd18db4cc2f85cedef654fccc4a4d8+3', - 'wrong md5 hash from Keep.put("foo"): ' + foo_locator) + self.assertRegexpMatches( + foo_locator, + '^acbd18db4cc2f85cedef654fccc4a4d8\+3', + 'wrong md5 hash from Keep.put("foo"): ' + foo_locator) self.assertEqual(arvados.Keep.get(foo_locator), 'foo', 'wrong content from Keep.get(md5("foo"))') @@ -45,10 +47,10 @@ class KeepTestCase(unittest.TestCase): def test_KeepBinaryRWTest(self): blob_str = '\xff\xfe\xf7\x00\x01\x02' blob_locator = arvados.Keep.put(blob_str) - self.assertEqual(blob_locator, - '7fc7c53b45e53926ba52821140fef396+6', - ('wrong locator from Keep.put():' + - blob_locator)) + self.assertRegexpMatches( + blob_locator, + '^7fc7c53b45e53926ba52821140fef396\+6', + ('wrong locator from Keep.put():' + blob_locator)) self.assertEqual(arvados.Keep.get(blob_locator), blob_str, 'wrong content from Keep.get(md5())') @@ -58,10 +60,10 @@ class KeepTestCase(unittest.TestCase): for i in range(0,23): blob_str = blob_str + blob_str blob_locator = arvados.Keep.put(blob_str) - self.assertEqual(blob_locator, - '84d90fc0d8175dd5dcfab04b999bc956+67108864', - ('wrong locator from Keep.put(): ' + - blob_locator)) + self.assertRegexpMatches( + blob_locator, + '^84d90fc0d8175dd5dcfab04b999bc956\+67108864', + ('wrong locator from Keep.put(): ' + blob_locator)) self.assertEqual(arvados.Keep.get(blob_locator), blob_str, 'wrong content from Keep.get(md5())') @@ -69,10 +71,10 @@ class KeepTestCase(unittest.TestCase): def test_KeepSingleCopyRWTest(self): blob_str = '\xff\xfe\xfd\xfc\x00\x01\x02\x03' blob_locator = arvados.Keep.put(blob_str, copies=1) - self.assertEqual(blob_locator, - 'c902006bc98a3eb4a3663b65ab4a6fab+8', - ('wrong locator from Keep.put(): ' + - blob_locator)) + self.assertRegexpMatches( + blob_locator, + '^c902006bc98a3eb4a3663b65ab4a6fab\+8', + ('wrong locator from Keep.put(): ' + blob_locator)) self.assertEqual(arvados.Keep.get(blob_locator), blob_str, 'wrong content from Keep.get(md5())') @@ -105,21 +107,32 @@ class KeepPermissionTestCase(unittest.TestCase): 'foo', 'wrong content from Keep.get(md5("foo"))') - # With Keep permissions enabled, a GET request without a signature will fail. + # GET with an unsigned locator => NotFound bar_locator = arvados.Keep.put('bar') + unsigned_bar_locator = "37b51d194a7513e45b56f6524f2d51f2+3" self.assertRegexpMatches( bar_locator, r'^37b51d194a7513e45b56f6524f2d51f2\+3\+A[a-f0-9]+@[a-f0-9]+$', 'invalid locator from Keep.put("bar"): ' + bar_locator) self.assertRaises(arvados.errors.NotFoundError, arvados.Keep.get, - "37b51d194a7513e45b56f6524f2d51f2") + unsigned_bar_locator) - # A request without an API token will also fail. + # GET from a different user => NotFound + run_test_server.authorize_with('spectator') + self.assertRaises(arvados.errors.NotFoundError, + arvados.Keep.get, + bar_locator) + + # Unauthenticated GET for a signed locator => NotFound + # Unauthenticated GET for an unsigned locator => NotFound del arvados.config.settings()["ARVADOS_API_TOKEN"] self.assertRaises(arvados.errors.NotFoundError, arvados.Keep.get, bar_locator) + self.assertRaises(arvados.errors.NotFoundError, + arvados.Keep.get, + unsigned_bar_locator) # KeepOptionalPermission: starts Keep with --permission-key-file # but not --enforce-permissions (i.e. generate signatures on PUT @@ -237,9 +250,10 @@ class KeepProxyTestCase(unittest.TestCase): arvados.config._settings = None baz_locator = arvados.Keep.put('baz') - self.assertEqual(baz_locator, - '73feffa4b7f6bb68e44cf984c85f6e88+3', - 'wrong md5 hash from Keep.put("baz"): ' + baz_locator) + self.assertRegexpMatches( + baz_locator, + '^73feffa4b7f6bb68e44cf984c85f6e88\+3', + 'wrong md5 hash from Keep.put("baz"): ' + baz_locator) self.assertEqual(arvados.Keep.get(baz_locator), 'baz', 'wrong content from Keep.get(md5("baz"))') @@ -259,9 +273,10 @@ class KeepProxyTestCase(unittest.TestCase): # keep_services/accessible baz_locator = arvados.Keep.put('baz2') - self.assertEqual(baz_locator, - '91f372a266fe2bf2823cb8ec7fda31ce+4', - 'wrong md5 hash from Keep.put("baz2"): ' + baz_locator) + self.assertRegexpMatches( + baz_locator, + '^91f372a266fe2bf2823cb8ec7fda31ce\+4', + 'wrong md5 hash from Keep.put("baz2"): ' + baz_locator) self.assertEqual(arvados.Keep.get(baz_locator), 'baz2', 'wrong content from Keep.get(md5("baz2"))')