def test_list_files(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.get('/container/1') self.assertEqual(rv.status_code, 200) assert '[]' in rv.data
def test_delete_container(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.delete('/container/1') self.assertEqual(rv.status_code, 200) container = models.Container.query.filter_by(name='Gallery').first() self.assertIsNone(container)
def test_add_file_wrong_input(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.post('/container/1/files/', data='{}') self.assertEqual(rv.status_code, 400) file = models.File.query.filter_by( path='/home/user/pictures/gallery/picture4.png').first() self.assertIsNone(file)
def test_edit_container(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.put( '/container/1', data='{"name":"Gallery 1", "path":"/home/user/pictures/gallery"}') self.assertEqual(rv.status_code, 200) container = models.Container.query.filter_by(name='Gallery 1').first() self.assertIsNotNone(container)
def add_container(): data = json.JSONDecoder().decode(request.data) if 'name' not in data or 'files' not in data: return make_response('', 400) # error missing parameter if not data['files']: return make_response('', 400) # error missing parameter if 'output_path' in data: output_path = os.path.join(data['output_path'], data['name'] + cont_ext) # if output_path is specified use it else: output_path = os.path.join(basedir, 'data', str(current_user.id), data['name'] + cont_ext) # otherwise generate it container = models.Container(data['name'], output_path, policy_mode, current_user.id) # create container db.session.add(container) # and store it persistently db.session.commit() for f in data['files']: # iterate through submitted files array if 'path' not in f or 'type' not in f or 'policy' not in f: return make_response('', 400) # error missing file parameter if not os.path.isfile(f['path']): return make_response('', 404) # error file does not exist # TODO: delete created container in error case f['policy'] = f['policy'].replace(', ', ',').replace(': ', ':') # parse submitted policy policy = models.Policy.generate(f['policy'], current_user) # create file db.session.add(models.File(f['path'], f['type'], policy, f['policy'], container.id)) # store in DB db.session.commit() # serialize container for response out = container.dict() out['files'] = list() for f in container.files: out['files'].append(f.dict()) # generate AA parameter aa_param = dict() aa_param['files'] = list() for f in out['files']: aa_param['files'].append({ "path": f['path'], "type": f['type'], "policy": f['policy'] }) aa_param['outfile'] = container.path aa_param['owner'] = {'emails': [current_user.email]} # embed identity of user into container aa_response = AttrAuth.encrypt_container(container, aa_param) # start encryption if aa_response is None: return make_response('', 500) # error AA error return make_response(json.dumps(out), 201) # successful encryption
def test_show_file(self): container = models.Container('Gallery', '/home/user/pictures/gallery') db.session.add(container) db.session.commit() file = models.File('/home/user/pictures/gallery/picture4.png', 'PABE14', 'all', container.id) db.session.add(file) db.session.commit() rv = self.app.get('/container/1/files/1') self.assertEqual(rv.status_code, 200)
def test_delete_file(self): container = models.Container('Gallery', '/home/user/pictures/gallery') db.session.add(container) db.session.commit() file = models.File('/home/user/pictures/gallery/picture4.png', 'PABE14', 'all', container.id) db.session.add(file) db.session.commit() rv = self.app.delete('/container/1/files/1') self.assertEqual(rv.status_code, 200) file = models.File.query.filter_by(id=1).first() self.assertIsNone(file)
def test_add_file(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.post( '/container/1/files/', data= '{"path":"/home/user/pictures/gallery/picture4.png", "type":"PABE14", "policy":"all"}' ) self.assertEqual(rv.status_code, 201) file = models.File.query.filter_by( path='/home/user/pictures/gallery/picture4.png').first() self.assertIsNotNone(file)
def test_edit_file_wrong_input(self): container = models.Container('Gallery', '/home/user/pictures/gallery') db.session.add(container) db.session.commit() file = models.File('/home/user/pictures/gallery/picture4.png', 'PABE14', 'all', container.id) db.session.add(file) db.session.commit() rv = self.app.put('/container/1/files/1', data='{}') self.assertEqual(rv.status_code, 400) file = models.File.query.filter_by( path='/home/user/pictures/gallery/picture5.png').first() self.assertIsNone(file)
def test_edit_container_wrong_input(self): db.session.add( models.Container('Gallery', '/home/user/pictures/gallery')) db.session.commit() rv = self.app.put('/container/1', data='{"name":"Gallery 1"}') self.assertEqual(rv.status_code, 400)
from bootstrap import db from cm import models c1 = models.Container('Gallery', '/home/user/pictures/gallery') c2 = models.Container('Music', '/home/user/music') c3 = models.Container('Summer 96', '/home/user/pictures/vacation') c4 = models.Container('Work', '/home/user/work') c5 = models.Container('Notes', '/home/user/notes') db.session.add(c1) db.session.add(c2) db.session.add(c3) db.session.add(c4) db.session.add(c5) db.session.commit() f1 = models.File('/home/user/pictures/gallery/picture1.png', 'PABE14', 'all', c1.id) f2 = models.File('/home/user/pictures/gallery/picture2.png', 'PABE14', 'all', c1.id) f3 = models.File('/home/user/pictures/gallery/picture3.png', 'PABE14', 'all', c1.id) f4 = models.File('/home/user/music/song1.mp3', 'PABE14', 'all', c2.id) f5 = models.File('/home/user/music/song2.mp3', 'PABE14', 'all', c2.id) f6 = models.File('/home/user/music/song3.mp3', 'PABE14', 'all', c2.id) f7 = models.File('/home/user/pictures/vacation/summer96_1.jpg', 'PABE14', 'all', c3.id) f8 = models.File('/home/user/pictures/vacation/summer96_2.jpg', 'PABE14', 'all', c3.id)