From a581dd0b75db82317caf3275271405541447bdd1 Mon Sep 17 00:00:00 2001 From: Renzo Frigato Date: Mon, 1 Feb 2016 15:05:19 -0800 Subject: [PATCH] adapt tests to the paster app server --- test/integration_tests/test_collection.py | 60 +++++---- test/integration_tests/test_containers.py | 107 ++++++++++------ test/integration_tests/test_download.py | 137 +++++++++++++++++++++ test/integration_tests/test_errors.py | 6 +- test/integration_tests/test_groups.py | 23 ++-- test/integration_tests/test_notes.py | 66 +++++----- test/integration_tests/test_permissions.py | 76 +++++++++--- test/integration_tests/test_roles.py | 113 ++++++++++++----- test/integration_tests/test_tags.py | 67 ++++++---- test/integration_tests/test_users.py | 14 +-- 10 files changed, 488 insertions(+), 181 deletions(-) create mode 100644 test/integration_tests/test_download.py diff --git a/test/integration_tests/test_collection.py b/test/integration_tests/test_collection.py index 8d34581d2..1a44b83a5 100644 --- a/test/integration_tests/test_collection.py +++ b/test/integration_tests/test_collection.py @@ -1,5 +1,6 @@ import requests import json +import time import logging log = logging.getLogger(__name__) @@ -7,27 +8,36 @@ log.addHandler(sh) log.setLevel(logging.INFO) -import warnings - -warnings.filterwarnings('ignore') - from nose.tools import with_setup import pymongo from bson.objectid import ObjectId -db = pymongo.MongoClient('mongodb://localhost/scitran').get_default_database() - -base_url = 'https://localhost:8443/api' +db = pymongo.MongoClient('mongodb://localhost:9001/scitran').get_default_database() +adm_user = 'test@user.com' +base_url = 'http://localhost:8080/api' test_data = type('',(object,),{})() def setup_db(): + global session + session = requests.Session() + session.params = { + 'user': adm_user, + 'root': True + } + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok + payload = { + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) test_data.pid = json.loads(r.content)['_id'] assert r.ok log.debug('pid = \'{}\''.format(test_data.pid)) @@ -38,7 +48,7 @@ def setup_db(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/sessions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/sessions', data=payload) assert r.ok test_data.sid = json.loads(r.content)['_id'] log.debug('sid = \'{}\''.format(test_data.sid)) @@ -49,32 +59,34 @@ def setup_db(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/acquisitions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/acquisitions', data=payload) assert r.ok test_data.aid = json.loads(r.content)['_id'] log.debug('aid = \'{}\''.format(test_data.aid)) def teardown_db(): - r = requests.delete(base_url + '/acquisitions/' + test_data.aid + '?user=admin@user.com&root=true', verify=False) + session.params['root'] = True + r = session.delete(base_url + '/acquisitions/' + test_data.aid) assert r.ok - r = requests.delete(base_url + '/sessions/' + test_data.sid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/sessions/' + test_data.sid) assert r.ok - r = requests.delete(base_url + '/projects/' + test_data.pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + test_data.pid) assert r.ok @with_setup(setup_db, teardown_db) def test_collections(): payload = { - 'curator': 'admin@user.com', - 'label': 'SciTran/Testing', - 'public': True + 'curator': adm_user, + 'label': 'test_collection_'+ str(int(time.time())) , + 'public': False } - r = requests.post(base_url + '/collections?user=admin@user.com', data=json.dumps(payload), verify=False) + session.params['root'] = False + r = session.post(base_url + '/collections', data=json.dumps(payload)) assert r.ok _id = json.loads(r.content)['_id'] log.debug('_id = \'{}\''.format(_id)) - r = requests.get(base_url + '/collections/' + _id + '?user=admin@user.com', verify=False) + r = session.get(base_url + '/collections/' + _id) assert r.ok payload = { 'contents':{ @@ -86,9 +98,9 @@ def test_collections(): 'operation': 'add' } } - r = requests.put(base_url + '/collections/' + _id + '?user=admin@user.com', data=json.dumps(payload), verify=False) + r = session.put(base_url + '/collections/' + _id, data=json.dumps(payload)) assert r.ok - r = requests.get(base_url + '/collections/' + _id + '/acquisitions?session=' + test_data.sid + '&user=admin@user.com', verify=False) + r = session.get(base_url + '/collections/' + _id + '/acquisitions?session=' + test_data.sid) assert r.ok coll_acq_id= json.loads(r.content)[0]['_id'] assert coll_acq_id == test_data.aid @@ -97,9 +109,9 @@ def test_collections(): for ac in acs: assert len(ac['collections']) == 1 assert ac['collections'][0] == ObjectId(_id) - r = requests.delete(base_url + '/collections/' + _id + '?user=admin@user.com', verify=False) + r = session.delete(base_url + '/collections/' + _id) assert r.ok - r = requests.get(base_url + '/collections/' + _id + '?user=admin@user.com', verify=False) + r = session.get(base_url + '/collections/' + _id) assert r.status_code == 404 acs = db.acquisitions.find({'_id': {'$in': acq_ids}}) for ac in acs: diff --git a/test/integration_tests/test_containers.py b/test/integration_tests/test_containers.py index f6e2887df..cdfdec9e2 100644 --- a/test/integration_tests/test_containers.py +++ b/test/integration_tests/test_containers.py @@ -1,43 +1,79 @@ import requests import json +import time +from nose.tools import with_setup import logging + log = logging.getLogger(__name__) sh = logging.StreamHandler() log.addHandler(sh) -requests.packages.urllib3.disable_warnings() +base_url = 'http://localhost:8080/api' +adm_user = 'test@user.com' +test_data = type('',(object,),{})() + +def setup_db(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': adm_user, + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok + test_data.group_id_1 = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id_1 + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok -base_url = 'https://localhost:8443/api' +def teardown_db(): + r = session.delete(base_url + '/groups/' + test_data.group_id) + assert r.ok + r = session.delete(base_url + '/groups/' + test_data.group_id_1) + assert r.ok +@with_setup(setup_db, teardown_db) def test_projects(): payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) assert r.ok _id = json.loads(r.content)['_id'] - r = requests.get(base_url + '/projects/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/projects/' + _id) assert r.ok payload = { - 'group': 'scitran', + 'group': test_data.group_id_1, } payload = json.dumps(payload) - r = requests.put(base_url + '/projects/' + _id + '?user=admin@user.com&root=true', data=payload, verify=False) + r = session.put(base_url + '/projects/' + _id, data=payload) assert r.ok - r = requests.delete(base_url + '/projects/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + _id) assert r.ok +@with_setup(setup_db, teardown_db) def test_sessions(): payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) assert r.ok pid = json.loads(r.content)['_id'] payload = { @@ -46,43 +82,44 @@ def test_sessions(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/sessions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/sessions', data=payload) assert r.ok _id = json.loads(r.content)['_id'] - r = requests.get(base_url + '/sessions/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/sessions/' + _id) assert r.ok payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing 2', + 'group': test_data.group_id, + 'label': 'test_project_1', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) new_pid = json.loads(r.content)['_id'] assert r.ok payload = { 'project': new_pid, } payload = json.dumps(payload) - r = requests.put(base_url + '/sessions/' + _id + '?user=admin@user.com&root=true', data=payload, verify=False) + r = session.put(base_url + '/sessions/' + _id, data=payload) assert r.ok - r = requests.delete(base_url + '/sessions/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/sessions/' + _id) assert r.ok - r = requests.get(base_url + '/sessions/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/sessions/' + _id) assert r.status_code == 404 - r = requests.delete(base_url + '/projects/' + pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + pid) assert r.ok - r = requests.delete(base_url + '/projects/' + new_pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + new_pid) assert r.ok +@with_setup(setup_db, teardown_db) def test_acquisitions(): payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) assert r.ok pid = json.loads(r.content)['_id'] payload = { @@ -91,7 +128,7 @@ def test_acquisitions(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/sessions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/sessions', data=payload) assert r.ok sid = json.loads(r.content)['_id'] @@ -101,7 +138,7 @@ def test_acquisitions(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/sessions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/sessions', data=payload) assert r.ok new_sid = json.loads(r.content)['_id'] @@ -111,27 +148,27 @@ def test_acquisitions(): 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/acquisitions?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/acquisitions', data=payload) assert r.ok aid = json.loads(r.content)['_id'] - r = requests.get(base_url + '/acquisitions/' + aid + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/acquisitions/' + aid) assert r.ok payload = { 'session': new_sid } payload = json.dumps(payload) - r = requests.put(base_url + '/acquisitions/' + aid + '?user=admin@user.com&root=true', data=payload, verify=False) + r = session.put(base_url + '/acquisitions/' + aid, data=payload) assert r.ok - r = requests.delete(base_url + '/acquisitions/' + aid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/acquisitions/' + aid) assert r.ok - r = requests.get(base_url + '/acquisitions/' + aid + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/acquisitions/' + aid) assert r.status_code == 404 - r = requests.delete(base_url + '/sessions/' + sid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/sessions/' + sid) assert r.ok - r = requests.delete(base_url + '/sessions/' + new_sid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/sessions/' + new_sid) assert r.ok - r = requests.delete(base_url + '/projects/' + pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + pid) assert r.ok diff --git a/test/integration_tests/test_download.py b/test/integration_tests/test_download.py new file mode 100644 index 000000000..4f6c49307 --- /dev/null +++ b/test/integration_tests/test_download.py @@ -0,0 +1,137 @@ +import requests +import json +import time +import logging +from nose.tools import with_setup + +log = logging.getLogger(__name__) +sh = logging.StreamHandler() +log.addHandler(sh) +log.setLevel(logging.INFO) + + +base_url = 'http://localhost:8080/api' +test_data = type('',(object,),{})() + +session = None + +def setup_download(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': 'test@user.com', + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok + + # Create a project + payload = { + 'group': test_data.group_id, + 'label': 'scitran_testing', + 'public': False + } + payload = json.dumps(payload) + r = session.post(base_url + '/projects', data=payload) + test_data.pid = json.loads(r.content)['_id'] + assert r.ok + log.debug('pid = \'{}\''.format(test_data.pid)) + + # Create a session + payload = { + 'project': test_data.pid, + 'label': 'session_testing', + 'public': False + } + payload = json.dumps(payload) + r = session.post(base_url + '/sessions', data=payload) + assert r.ok + test_data.sid = json.loads(r.content)['_id'] + log.debug('sid = \'{}\''.format(test_data.sid)) + + # Create an acquisition + payload = { + 'session': test_data.sid, + 'label': 'acq_testing', + 'public': False + } + payload = json.dumps(payload) + r = session.post(base_url + '/acquisitions', data=payload) + assert r.ok + test_data.aid = json.loads(r.content)['_id'] + log.debug('aid = \'{}\''.format(test_data.aid)) + + ## multiform fields for the file upload + files = {'file': ('test.csv', 'some,data,to,send\nanother,row,to,send\n'), + 'tags': ('', '["incomplete"]'), + 'metadata': ('', + '{"group": {"_id": "scitran"}, ' \ + '"project": {"label": "Testdata"}, ' \ + '"session": {"uid": "1.2.840.113619.6.353.10437158128305161617400354036593525848"}, ' \ + '"file": {"type": "nifti"}, ' + '"acquisition": {"uid": "1.2.840.113619.2.353.4120.7575399.14591.1403393566.658_1", ' \ + '"timestamp": "1970-01-01T00:00:00", ' \ + '"label": "Screen Save", ' \ + '"instrument": "MRI", ' \ + '"measurement": "screensave", ' \ + '"timezone": "America/Los_Angeles"}, ' \ + '"subject": {"code": "ex7236"}}' + )} + + # upload the same file to each container created in the test + session.post(base_url + '/acquisitions/' + test_data.aid +'/files', files=files) + session.post(base_url + '/sessions/' + test_data.sid +'/files', files=files) + session.post(base_url + '/projects/' + test_data.pid +'/files', files=files) + + +def teardown_download(): + success = True + # remove all the container created in the test + r = session.delete(base_url + '/acquisitions/' + test_data.aid) + success = success and r.ok + r = session.delete(base_url + '/sessions/' + test_data.sid) + success = success and r.ok + r = session.delete(base_url + '/projects/' + test_data.pid) + success = success and r.ok + r = session.delete(base_url + '/groups/' + test_data.group_id) + success = success and r.ok + session.close() + if not success: + log.error('error in the teardown. These containers may have not been removed.') + log.error(str(test_data.__dict__)) + + +@with_setup(setup_download, teardown_download) +def test_download(): + # Retrieve a ticket for a batch download + payload = { + 'optional': False, + 'nodes': [ + { + 'level': 'project', + '_id': test_data.pid + } + ] + } + payload = json.dumps(payload) + r = session.post(base_url + '/download', data=payload) + assert r.ok + + # Perform the download + ticket = json.loads(r.content)['ticket'] + r = session.get(base_url + '/download', params={'ticket': ticket}) + assert r.ok + # Save the tar to a file if successful + f = open('test_download.tar', 'w') + f.write(r.content) + f.close() + + diff --git a/test/integration_tests/test_errors.py b/test/integration_tests/test_errors.py index 84a884618..01cdffe06 100644 --- a/test/integration_tests/test_errors.py +++ b/test/integration_tests/test_errors.py @@ -6,10 +6,10 @@ log.addHandler(sh) import warnings warnings.filterwarnings('ignore') -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' import pymongo -db = pymongo.MongoClient('mongodb://localhost/scitran').get_default_database() +db = pymongo.MongoClient('mongodb://localhost:9001/scitran').get_default_database() projects = db.projects def test_extra_param(): @@ -20,7 +20,7 @@ def test_extra_param(): 'extra_param': 'some_value' } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = requests.post(base_url + '/projects?user=test@user.com&root=true', data=payload) assert r.status_code == 400 r = projects.delete_many({'label': 'SciTran/Testing'}) assert r.deleted_count == 0 diff --git a/test/integration_tests/test_groups.py b/test/integration_tests/test_groups.py index 170f6ceb6..75b204b7e 100644 --- a/test/integration_tests/test_groups.py +++ b/test/integration_tests/test_groups.py @@ -1,31 +1,36 @@ import requests import json +import time import logging log = logging.getLogger(__name__) sh = logging.StreamHandler() log.addHandler(sh) -requests.packages.urllib3.disable_warnings() - -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' def test_groups(): - _id = 'test' - r = requests.get(base_url + '/groups/' + _id + '?user=admin@user.com&root=true', verify=False) + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': 'test@user.com', + 'root': True + } + _id = 'test_group_' + str(int(time.time()*1000)) + r = session.get(base_url + '/groups/' + _id) assert r.status_code == 404 payload = { '_id': _id } payload = json.dumps(payload) - r = requests.post(base_url + '/groups?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/groups', data=payload) assert r.ok - r = requests.get(base_url + '/groups/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.get(base_url + '/groups/' + _id) assert r.ok payload = { 'name': 'Test group', } payload = json.dumps(payload) - r = requests.put(base_url + '/groups/' + _id + '?user=admin@user.com&root=true', data=payload, verify=False) + r = session.put(base_url + '/groups/' + _id, data=payload) assert r.ok - r = requests.delete(base_url + '/groups/' + _id + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/groups/' + _id) assert r.ok diff --git a/test/integration_tests/test_notes.py b/test/integration_tests/test_notes.py index 42188ba62..4ab669d92 100644 --- a/test/integration_tests/test_notes.py +++ b/test/integration_tests/test_notes.py @@ -1,6 +1,6 @@ import requests import json -import warnings +import time from nose.tools import with_setup import logging @@ -8,12 +8,10 @@ sh = logging.StreamHandler() log.addHandler(sh) log.setLevel(logging.INFO) -warnings.filterwarnings('ignore') -adm_user = 'admin@user.com' -user = 'test@user.com' +adm_user = 'test@user.com' test_data = type('',(object,),{})() -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' def _build_url(_id=None, requestor=adm_user): if _id is None: @@ -22,56 +20,66 @@ def _build_url(_id=None, requestor=adm_user): url = test_data.proj_url + '/' + _id + '?user=' + requestor return url - def setup_db(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': adm_user, + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok + payload = { + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) test_data.pid = json.loads(r.content)['_id'] assert r.ok log.debug('pid = \'{}\''.format(test_data.pid)) test_data.proj_url = base_url + '/projects/{}/notes'.format(test_data.pid) - data = { - '_id': user, - 'site': 'local', - 'access': 'rw' - } - url = base_url + '/projects/' + test_data.pid + '/permissions?user=admin@user.com&root=true' - r = requests.post(url, data=json.dumps(data), verify=False) - assert r.ok def teardown_db(): - r = requests.delete(base_url + '/projects/' + test_data.pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + test_data.pid) + assert r.ok + r = session.delete(base_url + '/groups/' + test_data.group_id) assert r.ok @with_setup(setup_db, teardown_db) def test_notes(): - url_post = _build_url(requestor=user) - data = {'user': user, 'text':'test note'} - r = requests.post(url_post, data=json.dumps(data), verify=False) + url_post = test_data.proj_url + + data = {'text':'test note'} + r = session.post(url_post, data=json.dumps(data)) assert r.ok - r = requests.get(base_url + '/projects/{}?user={}'.format(test_data.pid, adm_user), verify=False) + r = session.get(base_url + '/projects/{}?user={}'.format(test_data.pid, adm_user)) assert r.ok p = json.loads(r.content) assert len(p['notes']) == 1 - assert p['notes'][0]['user'] == user + assert p['notes'][0]['user'] == adm_user note_id = p['notes'][0]['_id'] - url_get = _build_url(note_id, user) - r = requests.get(url_get, verify=False) + url_get = test_data.proj_url + '/' + note_id + r = session.get(url_get) assert r.ok assert json.loads(r.content)['_id'] == note_id data = {'text':'modified test note'} - r = requests.put(url_get, data=json.dumps(data), verify=False) + r = session.put(url_get, data=json.dumps(data)) assert r.ok - r = requests.get(url_get, verify=False) + r = session.get(url_get) assert r.ok assert json.loads(r.content)['text'] == 'modified test note' - r = requests.delete(url_get, verify=False) + r = session.delete(url_get) assert r.ok - r = requests.get(url_get, verify=False) + r = session.get(url_get) assert r.status_code == 404 diff --git a/test/integration_tests/test_permissions.py b/test/integration_tests/test_permissions.py index f26cf736b..8ba38f4e8 100644 --- a/test/integration_tests/test_permissions.py +++ b/test/integration_tests/test_permissions.py @@ -1,6 +1,6 @@ import requests import json -import warnings +import time from nose.tools import with_setup import logging @@ -8,12 +8,13 @@ sh = logging.StreamHandler() log.addHandler(sh) log.setLevel(logging.INFO) -warnings.filterwarnings('ignore') -adm_user = 'admin@user.com' -user = 'test@user.com' +adm_user = 'test@user.com' +user = 'other@user.com' +user1 = 'other1@user.com' test_data = type('',(object,),{})() -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' +session = None def _build_url(_id=None, requestor=adm_user, site='local'): if _id is None: @@ -24,36 +25,55 @@ def _build_url(_id=None, requestor=adm_user, site='local'): def setup_db(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': adm_user, + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) test_data.pid = json.loads(r.content)['_id'] assert r.ok log.debug('pid = \'{}\''.format(test_data.pid)) test_data.proj_url = base_url + '/projects/{}/permissions'.format(test_data.pid) def teardown_db(): - r = requests.delete(base_url + '/projects/' + test_data.pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + test_data.pid) + assert r.ok + r = session.delete(base_url + '/groups/' + test_data.group_id) assert r.ok @with_setup(setup_db, teardown_db) def test_permissions(): url_post = _build_url() url_get = _build_url(user) - r = requests.get(url_get, verify=False) + url_get_1 = _build_url(user1) + r = requests.get(url_get) assert r.status_code == 404 data = { '_id': user, 'site': 'local', 'access': 'ro' } - r = requests.post(url_post, data = json.dumps(data), verify=False) + r = requests.post(url_post, data = json.dumps(data)) assert r.ok - r = requests.get(url_get, verify=False) + r = requests.get(url_get) assert r.ok content = json.loads(r.content) assert content['_id'] == user @@ -62,15 +82,33 @@ def test_permissions(): data = { 'access': 'admin' } - r = requests.put(url_get, data = json.dumps(data), verify=False) + r = requests.put(url_get, data = json.dumps(data)) assert r.ok - r = requests.get(url_get, verify=False) + data = { + '_id': user1, + 'site': 'local', + 'access': 'ro' + } + r = requests.post(url_post, data = json.dumps(data)) + assert r.ok + data = { + '_id': user + } + r = requests.put(url_get_1, data = json.dumps(data)) + assert r.status_code == 404 + data = { + 'site': 'another' + } + r = requests.put(url_get_1, data = json.dumps(data)) + assert r.ok + url_get_1 = _build_url(user1, site='another') + r = requests.get(url_get_1) assert r.ok content = json.loads(r.content) - assert content['_id'] == user - assert content['site'] == 'local' - assert content['access'] == 'admin' - r = requests.delete(url_get, verify=False) + assert content['_id'] == user1 + assert content['site'] == 'another' + assert content['access'] == 'ro' + r = requests.delete(url_get_1) assert r.ok - r = requests.get(url_get, verify=False) + r = requests.get(url_get_1) assert r.status_code == 404 diff --git a/test/integration_tests/test_roles.py b/test/integration_tests/test_roles.py index e577792a9..1c45a859a 100644 --- a/test/integration_tests/test_roles.py +++ b/test/integration_tests/test_roles.py @@ -1,15 +1,56 @@ import requests +import os import json -from pprint import pprint +import time +from nose.tools import with_setup -import warnings -warnings.filterwarnings('ignore') +base_url = 'http://localhost:8080/api' +adm_user = 'test@user.com' +user = 'other@user.com' +test_data = type('',(object,),{})() -base_url = 'https://localhost:8443/api/groups/scitran/roles' -def _build_url_and_payload(method, user, access, requestor, site='local'): +def setup_db(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': adm_user, + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok + payload = { + '_id': user, + 'firstname': 'Other', + 'lastname': 'User', + } + payload = json.dumps(payload) + r = session.post(base_url + '/users', data=payload) + assert r.ok + session.params = {} + +def teardown_db(): + session.params = { + 'user': adm_user, + 'root': True + } + r = session.delete(base_url + '/groups/' + test_data.group_id) + assert r.ok + r = session.delete(base_url + '/users/' + user) + assert r.ok + +def _build_url_and_payload(method, user, access, site='local'): + + url = os.path.join(base_url, 'groups', test_data.group_id, 'roles') if method == 'POST': - url = base_url + '?user=' + requestor payload = { '_id': user, 'site': site, @@ -17,45 +58,57 @@ def _build_url_and_payload(method, user, access, requestor, site='local'): } return url, json.dumps(payload) else: - url = base_url + '/' + site + '/' + user + '?user=' + requestor - return url, None - -adm_user = 'admin@user.com' -user = 'test@user.com' + return os.path.join(url, site, user), None +@with_setup(setup_db, teardown_db) def test_roles(): - url_get, _ = _build_url_and_payload('GET', user, None, adm_user) - r = requests.get(url_get, verify=False) + session.params = { + 'user': adm_user + } + url_get, _ = _build_url_and_payload('GET', user, None) + r = session.get(url_get) assert r.status_code == 404 - url_post, payload = _build_url_and_payload('POST', user, 'rw', adm_user) - r = requests.post(url_post, data=payload, verify=False) + url_post, payload = _build_url_and_payload('POST', user, 'rw') + r = session.post(url_post, data=payload) assert r.ok - r = requests.get(url_get, verify=False) + r = session.get(url_get) assert r.ok content = json.loads(r.content) assert content['access'] == 'rw' assert content['_id'] == user - - url_get_not_auth, _ = _build_url_and_payload('GET', adm_user, None, user) - r = requests.get(url_get_not_auth, verify=False) + session.params = { + 'user': user + } + url_get_not_auth, _ = _build_url_and_payload('GET', adm_user, None) + r = session.get(url_get_not_auth) assert r.status_code == 403 - + session.params = { + 'user': adm_user + } payload = json.dumps({'access':'admin'}) - r = requests.put(url_get, data=payload, verify=False) + r = session.put(url_get, data=payload) assert r.ok - - r = requests.get(url_get_not_auth, verify=False) + session.params = { + 'user': user + } + r = session.get(url_get_not_auth) assert r.ok - + session.params = { + 'user': adm_user + } payload = json.dumps({'access':'rw'}) - r = requests.put(url_get, data=payload, verify=False) + r = session.put(url_get, data=payload) assert r.ok - - r = requests.get(url_get_not_auth, verify=False) + session.params = { + 'user': user + } + r = session.get(url_get_not_auth) assert r.status_code == 403 - - r = requests.delete(url_get, verify=False) + session.params = { + 'user': adm_user + } + r = session.delete(url_get) assert r.ok - r = requests.get(url_get, verify=False) + r = session.get(url_get) assert r.status_code == 404 diff --git a/test/integration_tests/test_tags.py b/test/integration_tests/test_tags.py index eb19c8a17..8d337c663 100644 --- a/test/integration_tests/test_tags.py +++ b/test/integration_tests/test_tags.py @@ -1,6 +1,6 @@ import requests import json -import warnings +import time from nose.tools import with_setup import logging @@ -8,37 +8,54 @@ sh = logging.StreamHandler() log.addHandler(sh) log.setLevel(logging.INFO) -warnings.filterwarnings('ignore') adm_user = 'admin@user.com' test_data = type('',(object,),{})() -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' +session = None def _build_url_and_payload(method, tag, newtag=None, requestor=adm_user): if method == 'POST': - url = test_data.proj_url + '?user=' + requestor + url = test_data.proj_url payload = json.dumps({'value': tag}) else: - url = test_data.proj_url + '/' + tag + '?user=' + requestor + url = test_data.proj_url + '/' + tag payload = json.dumps({'value': newtag}) return url, payload - def setup_db(): + global session + session = requests.Session() + # all the requests will be performed as root + session.params = { + 'user': 'test@user.com', + 'root': True + } + + # Create a group + test_data.group_id = 'test_group_' + str(int(time.time()*1000)) + payload = { + '_id': test_data.group_id + } + payload = json.dumps(payload) + r = session.post(base_url + '/groups', data=payload) + assert r.ok payload = { - 'group': 'unknown', - 'label': 'SciTran/Testing', + 'group': test_data.group_id, + 'label': 'test_project', 'public': False } payload = json.dumps(payload) - r = requests.post(base_url + '/projects?user=admin@user.com&root=true', data=payload, verify=False) + r = session.post(base_url + '/projects', data=payload) test_data.pid = json.loads(r.content)['_id'] assert r.ok log.debug('pid = \'{}\''.format(test_data.pid)) test_data.proj_url = base_url + '/projects/{}/tags'.format(test_data.pid) def teardown_db(): - r = requests.delete(base_url + '/projects/' + test_data.pid + '?user=admin@user.com&root=true', verify=False) + r = session.delete(base_url + '/projects/' + test_data.pid) + assert r.ok + r = session.delete(base_url + '/groups/' + test_data.group_id) assert r.ok @with_setup(setup_db, teardown_db) @@ -50,45 +67,45 @@ def test_tags(): url_get_new, _ = _build_url_and_payload('GET', new_tag) url_get_other, _ = _build_url_and_payload('GET', other_tag) - r = requests.get(url_get_tag, verify=False) + r = session.get(url_get_tag) assert r.status_code == 404 url_post, payload = _build_url_and_payload('POST', tag) - r = requests.post(url_post, data=payload, verify=False) + r = session.post(url_post, data=payload) assert r.ok - r = requests.get(url_get_tag, verify=False) + r = session.get(url_get_tag) assert r.ok assert json.loads(r.content) == tag url_post, payload = _build_url_and_payload('POST', new_tag) - r = requests.post(url_post, data=payload, verify=False) + r = session.post(url_post, data=payload) assert r.ok url_post, payload = _build_url_and_payload('POST', new_tag) - r = requests.post(url_post, data=payload, verify=False) + r = session.post(url_post, data=payload) assert r.status_code == 404 - r = requests.get(url_get_new, verify=False) + r = session.get(url_get_new) assert r.ok assert json.loads(r.content) == new_tag url_put, payload = _build_url_and_payload('PUT', tag, new_tag) - r = requests.put(url_put, data=payload, verify=False) + r = session.put(url_put, data=payload) assert r.status_code == 404 - r = requests.get(url_get_other, verify=False) + r = session.get(url_get_other, verify=False) assert r.status_code == 404 url_put, payload = _build_url_and_payload('PUT', tag, other_tag) - r = requests.put(url_put, data=payload, verify=False) + r = session.put(url_put, data=payload) assert r.ok - r = requests.get(url_get_other, verify=False) + r = session.get(url_get_other) assert r.ok assert json.loads(r.content) == other_tag - r = requests.get(url_get_tag, verify=False) + r = session.get(url_get_tag) assert r.status_code == 404 - r = requests.delete(url_get_other, verify=False) # url for 'DELETE' is the same as the one for 'GET' + r = session.delete(url_get_other) # url for 'DELETE' is the same as the one for 'GET' assert r.ok - r = requests.get(url_get_other, verify=False) + r = session.get(url_get_other) assert r.status_code == 404 - r = requests.delete(url_get_new, verify=False) # url for 'DELETE' is the same as the one for 'GET' + r = session.delete(url_get_new) # url for 'DELETE' is the same as the one for 'GET' assert r.ok - r = requests.get(url_get_new, verify=False) + r = session.get(url_get_new) assert r.status_code == 404 diff --git a/test/integration_tests/test_users.py b/test/integration_tests/test_users.py index 57b30b061..d5f4e541d 100644 --- a/test/integration_tests/test_users.py +++ b/test/integration_tests/test_users.py @@ -7,13 +7,13 @@ requests.packages.urllib3.disable_warnings() -base_url = 'https://localhost:8443/api' +base_url = 'http://localhost:8080/api' def test_users(): _id = 'new@user.com' - r = requests.get(base_url + '/users/self?user=admin@user.com', verify=False) + r = requests.get(base_url + '/users/self?user=test@user.com') assert r.ok - r = requests.get(base_url + '/users/' + _id + '?user=admin@user.com&root=true', verify=False) + r = requests.get(base_url + '/users/' + _id + '?user=test@user.com&root=true') assert r.status_code == 404 payload = { '_id': _id, @@ -21,15 +21,15 @@ def test_users(): 'lastname': 'User', } payload = json.dumps(payload) - r = requests.post(base_url + '/users?user=admin@user.com&root=true', data=payload, verify=False) + r = requests.post(base_url + '/users?user=test@user.com&root=true', data=payload) assert r.ok - r = requests.get(base_url + '/users/' + _id + '?user=admin@user.com&root=true', verify=False) + r = requests.get(base_url + '/users/' + _id + '?user=test@user.com&root=true') assert r.ok payload = { 'firstname': 'Realname' } payload = json.dumps(payload) - r = requests.put(base_url + '/users/' + _id + '?user=admin@user.com&root=true', data=payload, verify=False) + r = requests.put(base_url + '/users/' + _id + '?user=test@user.com&root=true', data=payload) assert r.ok - r = requests.delete(base_url + '/users/' + _id + '?user=admin@user.com&root=true', verify=False) + r = requests.delete(base_url + '/users/' + _id + '?user=test@user.com&root=true') assert r.ok