Browse Source

get basic object storage and lookup working...

main
John-Mark Gurney 5 years ago
parent
commit
afc81b59ea
1 changed files with 38 additions and 3 deletions
  1. +38
    -3
      ui/server.py

+ 38
- 3
ui/server.py View File

@@ -21,11 +21,13 @@ import mock
import os.path
import shutil
import tempfile
import uuid

defaultfile = 'mediaserver.store.pasn1'
class MEDAServer:
def __init__(self, fname):
self._trustedkeys = {}
self._objstore = {}

app = Klein()

@@ -37,9 +39,15 @@ class MEDAServer:
def store(self):
pass

@app.route('/')
def home(request):
return 'hello'
@app.route('/obj/<id>')
def obj_lookup(self, request, id):
try:
id = uuid.UUID(id)
return self._objstore[id][-1].encode()
except ValueError:
request.setResponseCode(400)
except KeyError:
request.setResponseCode(404)

@app.route('/store')
def storeobj(self, request):
@@ -54,6 +62,8 @@ class MEDAServer:
persona = self._trustedkeys[keyuuid]
persona.verify(obj)

self._objstore.setdefault(obj.uuid, []).append(obj)

request.setResponseCode(201)

except Exception:
@@ -104,6 +114,19 @@ class _TestCases(unittest.TestCase):
r = self.requests.get('/chash/%s' % h)
self.assertEqual(r.status_code, 404)

def test_objlookup(self):
# that when fetching an non-existant object
r = self.requests.get('/obj/%s' % str(uuid.uuid4()))

# it is 404, not found
self.assertEqual(r.status_code, 404)

# that passing an invalid uuid
r = self.requests.get('/obj/bogusuuid')

# it is 400, bad request
self.assertEqual(r.status_code, 400)

def test_pubkeystorage(self):
import cli

@@ -133,6 +156,18 @@ class _TestCases(unittest.TestCase):
# is rejected
self.assertEqual(r.status_code, 401)

# that when fetching the object back
r = self.requests.get('/obj/%s' % str(persona.uuid))

# it is successful
self.assertEqual(r.status_code, 200)

# that the returned data
fetchobj = MDBase.decode(r.text)

# matches what was stored
self.assertEqual(fetchobj, persona.get_identity())

# that when stored
self.medaserver.store()



Loading…
Cancel
Save