from fixtures import * def test_web_release_create_accept(app_admin, api): eg = quick_eg(api) rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 assert b'Release Edits (0)' in rv.data # bogus/bad submit rv = app_admin.post('/release/create', data={ 'editgroup_id': eg.editgroup_id, 'release_type': 'badmojo', 'release_stage': 'published', 'title': 'something bogus', }, follow_redirects=True) assert rv.status_code == 400 # Does not insert bad choices into drop-down #assert b'badmojo' in rv.data assert b'Not a valid choice' in rv.data # bad wikidata QID rv = app_admin.post('/release/create', data={ 'editgroup_id': eg.editgroup_id, 'release_type': 'article-journal', 'release_stage': 'published', 'title': 'something bogus', 'wikidata_qid': '884', }, follow_redirects=True) assert rv.status_code == 400 # ok/valid submit rv = app_admin.post('/release/create', data={ 'editgroup_id': eg.editgroup_id, 'release_type': 'article-journal', 'release_stage': 'published', 'title': 'something bogus', 'doi': '10.1234/999999', }, follow_redirects=True) assert rv.status_code == 200 assert b'10.1234/999999' in rv.data rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 assert b'Release Edits (1)' in rv.data rv = app_admin.post('/editgroup/{}/submit'.format(eg.editgroup_id), follow_redirects=True, ) assert rv.status_code == 200 rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 assert b'Submitted' in rv.data assert b'None!' in rv.data rv = app_admin.post('/editgroup/{}/unsubmit'.format(eg.editgroup_id), follow_redirects=True, ) assert rv.status_code == 200 rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 rv = app_admin.post('/editgroup/{}/annotation'.format(eg.editgroup_id), data={ 'comment_markdown': "This is an **example** of markdown in a test annotation", }, follow_redirects=True, ) assert rv.status_code == 200 rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 assert b'

This is an example of markdown in a test annotation' in rv.data rv = app_admin.post('/editgroup/{}/accept'.format(eg.editgroup_id), follow_redirects=True, ) assert rv.status_code == 200 rv = app_admin.get('/editgroup/{}'.format(eg.editgroup_id)) assert rv.status_code == 200 assert b'Merged' in rv.data def test_web_container_create(app_admin, api): eg = quick_eg(api) # bogus/bad submit rv = app_admin.post('/container/create', data={ 'editgroup_id': eg.editgroup_id, }, follow_redirects=True) assert rv.status_code == 400 # ok/valid submit rv = app_admin.post('/container/create', data={ 'editgroup_id': eg.editgroup_id, 'name': 'blah blah journal blah', }, follow_redirects=True) assert rv.status_code == 200 def test_web_file_create(app_admin, api): eg = quick_eg(api) # bogus/bad submit rv = app_admin.post('/file/create', data={ 'editgroup_id': eg.editgroup_id, }, follow_redirects=True) assert rv.status_code == 400 # ok/valid submit rv = app_admin.post('/file/create', data={ 'editgroup_id': eg.editgroup_id, 'size': '12345', 'sha1': '45be56a396c4d03faaa41e055170c23534dec736', }, follow_redirects=True) assert rv.status_code == 200 # upper-case SHA-1 rv = app_admin.post('/file/create', data={ 'editgroup_id': eg.editgroup_id, 'size': '12345', 'sha1': '45BE56A396C4D03FAAA41E055170C23534DEC736', }, follow_redirects=True) assert rv.status_code == 200 def test_web_file_toml_create(app_admin, api): eg = quick_eg(api) # bogus/bad submit rv = app_admin.post('/file/create/toml', data={ 'editgroup_id': eg.editgroup_id, }, follow_redirects=True) assert rv.status_code == 400 # ok/valid submit rv = app_admin.post('/file/create/toml', data={ 'editgroup_id': eg.editgroup_id, 'toml': """ size = 12345 sha1 = "45be56a396c4d03faaa41e055170c23534dec736" """, }, follow_redirects=True) assert rv.status_code == 200 # upper-case SHA-1 rv = app_admin.post('/file/create/toml', data={ 'editgroup_id': eg.editgroup_id, 'toml': """ size = 12345 sha1 = "45BE56A396C4D03FAAA41E055170C23534DEC736" """, }, follow_redirects=True) assert rv.status_code == 400 def test_web_file_delete(app_admin, api): eg = quick_eg(api) rv = app_admin.get('/file/aaaaaaaaaaaaamztaaaaaaaaam/delete') assert rv.status_code == 200 rv = app_admin.post('/file/aaaaaaaaaaaaamztaaaaaaaaam/delete', data={ 'editgroup_id': eg.editgroup_id, }, follow_redirects=True) assert rv.status_code == 200 # NOTE: did not *accept* the deletion edit DUMMY_DEMO_ENTITIES = { 'container': 'aaaaaaaaaaaaaeiraaaaaaaaam', 'creator': 'aaaaaaaaaaaaaircaaaaaaaaaq', 'file': 'aaaaaaaaaaaaamztaaaaaaaaam', 'fileset': 'aaaaaaaaaaaaaztgaaaaaaaaai', 'webcapture': 'aaaaaaaaaaaaa53xaaaaaaaaai', 'release': 'aaaaaaaaaaaaarceaaaaaaaaai', 'work': 'aaaaaaaaaaaaavkvaaaaaaaaai', } def test_web_edit_get(app_admin): # these are all existing entities for entity_type in ['release', 'file', 'container']: rv = app_admin.get(f'/{entity_type}/{DUMMY_DEMO_ENTITIES[entity_type]}/edit') assert rv.status_code == 200 if entity_type == 'release': assert b'A bigger example' in rv.data elif entity_type == 'file': assert b'ffc1005680cb620eec4c913437dfabbf311b535cfe16cbaeb2faec1f92afc362' in rv.data elif entity_type == 'container': assert b'1549-1277' in rv.data rv = app_admin.get(f'/{entity_type}/{DUMMY_DEMO_ENTITIES[entity_type]}/edit/toml') assert rv.status_code == 200 if entity_type == 'release': assert b'A bigger example' in rv.data elif entity_type == 'file': assert b'ffc1005680cb620eec4c913437dfabbf311b535cfe16cbaeb2faec1f92afc362' in rv.data elif entity_type == 'container': assert b'1549-1277' in rv.data # TOML-only endpoints for entity_type in ['creator', 'fileset', 'webcapture', 'work']: rv = app_admin.get(f'/{entity_type}/{DUMMY_DEMO_ENTITIES[entity_type]}/edit') assert rv.status_code == 302 rv = app_admin.get(f'/{entity_type}/{DUMMY_DEMO_ENTITIES[entity_type]}/edit/toml') assert rv.status_code == 200 def test_web_create_get(app_admin): for entity_type in ['release', 'file', 'container']: rv = app_admin.get(f'/{entity_type}/create') assert rv.status_code == 200 rv = app_admin.get(f'/{entity_type}/create/toml') assert rv.status_code == 200 # these are TOML only for entity_type in ['creator', 'fileset', 'webcapture', 'work']: rv = app_admin.get(f'/{entity_type}/create') assert rv.status_code == 302 rv = app_admin.get(f'/{entity_type}/create/toml') assert rv.status_code == 200 def test_web_edit_delete(app_admin): for entity_type in DUMMY_DEMO_ENTITIES.keys(): rv = app_admin.get(f'/{entity_type}/{DUMMY_DEMO_ENTITIES[entity_type]}/delete') assert rv.status_code == 200