diff options
Diffstat (limited to 'tests/units/db/routes.py')
-rwxr-xr-x | tests/units/db/routes.py | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/units/db/routes.py b/tests/units/db/routes.py index 7da2f75..5786760 100755 --- a/tests/units/db/routes.py +++ b/tests/units/db/routes.py @@ -18,13 +18,50 @@ from __init__ import tests from sugar_network import db, toolkit from sugar_network.db import blobs from sugar_network.model.user import User -from sugar_network.toolkit.router import Router, Request, Response, fallbackroute, ACL +from sugar_network.toolkit.router import Router, Request, Response, fallbackroute, ACL, File from sugar_network.toolkit.coroutine import this from sugar_network.toolkit import coroutine, http, i18n class RoutesTest(tests.Test): + def setUp(self): + tests.Test.setUp(self) + self.blobs = {} + + def files_post(content, mime_type=None, digest_to_assert=None): + if hasattr(content, 'read'): + content = content.read() + digest = File.Digest(hash(content)) + if digest_to_assert: + assert digest == digest_to_assert + path = join('blobs', digest) + with file(path, 'w') as f: + f.write(content) + self.blobs[digest] = {'content-type': mime_type or 'application/octet-stream'} + return File(path, digest, self.blobs[digest].items()) + + def files_update(digest, meta): + self.blobs.setdefault(digest, {}).update(meta) + + def files_get(digest): + if digest not in self.blobs: + return None + path = join('blobs', digest) + return File(path, digest, self.blobs[digest].items()) + + def files_delete(digest): + path = join('blobs', digest) + if exists(path): + os.unlink(path) + if digest in self.blobs: + del self.blobs[digest] + + self.override(blobs, 'post', files_post) + self.override(blobs, 'update', files_update) + self.override(blobs, 'get', files_get) + self.override(blobs, 'delete', files_delete) + def test_PostDefaults(self): class Document(db.Resource): |