From 60d7a0cdff7d41cf897373feba784a1dd2136450 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Thu, 4 Apr 2019 17:50:30 -0700 Subject: add basic tests for a bunch of form handling code --- python/tests/web_entity_views.py | 154 ++++++++++++++++++++++++++++++++++----- 1 file changed, 137 insertions(+), 17 deletions(-) diff --git a/python/tests/web_entity_views.py b/python/tests/web_entity_views.py index 480b39cc..263a4652 100644 --- a/python/tests/web_entity_views.py +++ b/python/tests/web_entity_views.py @@ -4,6 +4,8 @@ import pytest from fatcat_client.rest import ApiException from fixtures import * +from fatcat_web.forms import ReleaseEntityForm, FileEntityForm, ContainerEntityForm + DUMMY_DEMO_ENTITIES = { 'container': 'aaaaaaaaaaaaaeiraaaaaaaaai', 'creator': 'aaaaaaaaaaaaaircaaaaaaaaai', @@ -47,18 +49,6 @@ def test_entity_basics(app): # TODO: redirects and deleted entities -def test_container(app_admin): - app = app_admin - - rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaai') - assert rv.status_code == 200 - - rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaai/edit') - assert rv.status_code == 200 - - rv = app.get('/container/create') - assert rv.status_code == 200 - def test_lookups(app): @@ -104,13 +94,60 @@ def test_lookups(app): assert rv.status_code == 404 +def test_web_container(app): + + rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaai') + assert rv.status_code == 200 + rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaai/edit') + assert rv.status_code == 302 + rv = app.get('/container/create') + assert rv.status_code == 302 + + +def test_web_container_login(full_app, app_admin): + + rv = app_admin.get('/container/aaaaaaaaaaaaaeiraaaaaaaaai/edit') + assert rv.status_code == 200 + assert b'Journal of Trivial Results' in rv.data + assert b'1234-5678' in rv.data + rv = app_admin.get('/container/create') + assert rv.status_code == 200 + + # creation (via form) + with full_app.test_request_context(): + form = ContainerEntityForm() + form.issnl.data = "invalid-issn" + rv = app_admin.post('/container/create', data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'invalid-issn' in rv.data + + with full_app.test_request_context(): + form = ContainerEntityForm() + # these fields are required + form.name.data = "Journal of Experiments" + rv = app_admin.post('/container/create', data=form.data, follow_redirects=True) + assert rv.status_code == 200 + assert b"Journal of Experiments" in rv.data + + # editing (via form) + with full_app.test_request_context(): + form = ContainerEntityForm() + form.issnl.data = "invalid-issn" + rv = app_admin.post('/container/aaaaaaaaaaaaaeiraaaaaaaaai/edit', + data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'invalid-issn' in rv.data + + def test_web_creator(app): # not logged in rv = app.get('/creator/aaaaaaaaaaaaaircaaaaaaaaai') assert rv.status_code == 200 rv = app.get('/creator/aaaaaaaaaaaaaircaaaaaaaaai/edit') - assert rv.status_code == 302 + assert rv.status_code == 404 + rv = app.get('/creator/create') + assert rv.status_code == 404 def test_web_file(app): @@ -120,8 +157,65 @@ def test_web_file(app): assert rv.status_code == 200 rv = app.get('/file/aaaaaaaaaaaaamztaaaaaaaaai/edit') assert rv.status_code == 302 - rv = app.get('/file/aaaaaaaaaaaaamztaaaaaaaaai/history') + rv = app.get('/file/create') + assert rv.status_code == 302 + + +def test_web_file_login(full_app, app_admin): + + rv = app_admin.get('/file/aaaaaaaaaaaaamztaaaaaaaaai/edit') + assert rv.status_code == 200 + assert b'7d97e98f8af710c7e7fe703abc8f639e0ee507c4' in rv.data + assert b'archive.org/robots.txt' in rv.data + rv = app_admin.get('/file/create') + assert rv.status_code == 200 + + # creation (via form) + with full_app.test_request_context(): + form = FileEntityForm() + form.sha1.data = "invalidstring" + rv = app_admin.post('/file/create', data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'invalidstring' in rv.data + + with full_app.test_request_context(): + form = FileEntityForm() + # these fields are required + form.size.data = 1234 + form.sha1.data = "202f899638fcaa97128b968a43a8f45e00b69a25" + rv = app_admin.post('/file/create', data=form.data, follow_redirects=True) + assert rv.status_code == 200 + + # editing (via form) + with full_app.test_request_context(): + form = FileEntityForm() + form.md5.data = "invalidstring" + rv = app_admin.post('/file/aaaaaaaaaaaaamztaaaaaaaaai/edit', + data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'invalidstring' in rv.data + +def test_web_fileset(app): + # not logged in + + rv = app.get('/fileset/aaaaaaaaaaaaaztgaaaaaaaaai') + assert rv.status_code == 200 + rv = app.get('/fileset/aaaaaaaaaaaaaztgaaaaaaaaai/edit') + assert rv.status_code == 404 + rv = app.get('/fileset/create') + assert rv.status_code == 404 + + +def test_web_webcatpure(app): + # not logged in + + rv = app.get('/webcapture/aaaaaaaaaaaaa53xaaaaaaaaai') assert rv.status_code == 200 + rv = app.get('/webcapture/aaaaaaaaaaaaa53xaaaaaaaaai/edit') + assert rv.status_code == 404 + rv = app.get('/webcapture/create') + assert rv.status_code == 404 + def test_web_release(app): # not logged in @@ -135,13 +229,41 @@ def test_web_release(app): assert rv.status_code == 302 -def test_web_release_login(app_admin): +def test_web_release_login(full_app, app_admin): rv = app_admin.get('/release/aaaaaaaaaaaaarceaaaaaaaaai/edit') assert rv.status_code == 200 + assert b'robin hood' in rv.data + assert b'PMC555' in rv.data rv = app_admin.get('/release/create') assert rv.status_code == 200 + # creation (via form) + with full_app.test_request_context(): + form= ReleaseEntityForm() + form.title.data = "My Research: Missing Some Stuff" + rv = app_admin.post('/release/create', data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'My Research: Missing Some Stuff' in rv.data + + with full_app.test_request_context(): + form = ReleaseEntityForm() + # these fields are required + form.title.data = "Creating Releases: A Review" + form.release_type.data = "article-journal" + form.release_status.data = "draft" + rv = app_admin.post('/release/create', data=form.data, follow_redirects=True) + assert rv.status_code == 200 + + # editing + with full_app.test_request_context(): + form= ReleaseEntityForm() + form.title.data = "My Research: Missing Some Stuff" + form.release_type.data = "bogus-release-type" + rv = app_admin.post('/release/create', data=form.data, follow_redirects=True) + assert rv.status_code == 400 + assert b'My Research: Missing Some Stuff' in rv.data + def test_web_search(app): @@ -153,10 +275,8 @@ def test_web_work(app): rv = app.get('/work/aaaaaaaaaaaaavkvaaaaaaaaai') assert rv.status_code == 200 - rv = app.get('/work/aaaaaaaaaaaaavkvaaaaaaaaai/edit') assert rv.status_code == 404 - rv = app.get('/work/create') assert rv.status_code == 404 -- cgit v1.2.3