Skip to content

Commit f8ecb90

Browse files
committed
Add moderation actions
1 parent f12c6ad commit f8ecb90

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

api/osf_api.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def create_child_node(
4646
node_id=None,
4747
title='osf selenium child node',
4848
tags=None,
49-
**kwargs
49+
**kwargs,
5050
):
5151
"""Create a child node (a.k.a. component) of a given project node."""
5252
if tags is None:
@@ -863,6 +863,43 @@ def accept_moderated_preprint(session=None, preprint_node=None):
863863
)
864864

865865

866+
def get_preprint_id(session=None, preprint_node=None):
867+
"""Get priprint's id"""
868+
if not session:
869+
session = get_default_session()
870+
request_url = f'/v2/preprints/{preprint_node}/requests/'
871+
872+
response = session.get(url=request_url)
873+
preprint_id = ''
874+
for item in response.get('data', []):
875+
preprint_id = item.get('id')
876+
return preprint_id
877+
878+
879+
def accept_withdraw_preprint(session=None, preprint_id=None):
880+
"""Accept a withdrawal request for a given preprint request ID."""
881+
if not session:
882+
session = get_default_session()
883+
review_url = '/v2/actions/requests/preprints/'
884+
review_payload = {
885+
'data': {
886+
'type': 'preprint-request-actions',
887+
'attributes': {
888+
'trigger': 'accept',
889+
'comment': 'Preprint Withdraw Approval via OSF api',
890+
},
891+
'relationships': {
892+
'target': {'data': {'id': preprint_id, 'type': 'preprint-requests'}}
893+
},
894+
}
895+
}
896+
session.post(
897+
url=review_url,
898+
item_type='review-actions',
899+
raw_body=json.dumps(review_payload),
900+
)
901+
902+
866903
def create_preprint_withdrawal_request(session=None, preprint_node=None):
867904
"""Create a withdrawal request for a given preprint node id."""
868905
if not session:

tests/test_preprints.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,6 @@ def test_edit_preprint(self, session, driver, preprint_detail_page):
328328
assert tag_found
329329

330330
@markers.dont_run_on_prod
331-
# @pytest.mark.xfail(reason='https://openscience.atlassian.net/browse/ENG-6065')
332331
def test_withdraw_preprint(self, session, driver, preprint_detail_page):
333332
"""Test the Withdraw Preprint functionality. Using the preprint_detail_page
334333
fixture we start on the Preprint Detail page for an api created preprint. Then
@@ -340,8 +339,11 @@ def test_withdraw_preprint(self, session, driver, preprint_detail_page):
340339
user in the OSF admin app. The best we can do here is to verify through the api
341340
that the withdrawal request record is created.
342341
"""
343-
assert PreprintDetailPage(driver, verify=True)
344342
edit_page = PreprintEditPage(driver)
343+
assert PreprintDetailPage(driver, verify=True)
344+
preprint_node = preprint_detail_page.url[len(settings.OSF_HOME) + 1 :]
345+
osf_api.accept_moderated_preprint(session=None, preprint_node=preprint_node)
346+
preprint_detail_page.goto()
345347
WebDriverWait(driver, 5).until(
346348
EC.element_to_be_clickable(
347349
(By.CSS_SELECTOR, '[data-test-withdrawal-button]')
@@ -362,6 +364,9 @@ def test_withdraw_preprint(self, session, driver, preprint_detail_page):
362364
)
363365
assert withdraw_page.request_withdrawal_button.is_enabled()
364366
withdraw_page.request_withdrawal_button.click()
367+
preprint_id = osf_api.get_preprint_id(session=None, preprint_node=preprint_node)
368+
osf_api.accept_withdraw_preprint(session=None, preprint_id=preprint_id)
369+
preprint_detail_page.goto()
365370
WebDriverWait(driver, 5).until(EC.visibility_of(withdraw_page.withdrawn_banner))
366371
# Should be redirected back to Preprint Detail page
367372
assert PendingPreprintDetailPage(driver, verify=True)

0 commit comments

Comments
 (0)