Skip to content

Commit 2a1244d

Browse files
committed
approve: handle usernames not in session
both of the added tests will fail prior to this patch. fixes #81
1 parent 8776681 commit 2a1244d

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

ocflib/account/submission.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -297,19 +297,25 @@ def get_remove_row_by_user_name(user_name):
297297
request_row = session.query(StoredNewAccountRequest).filter(
298298
StoredNewAccountRequest.user_name == user_name
299299
).first()
300-
session.delete(request_row)
301-
session.commit()
300+
if request_row:
301+
session.delete(request_row)
302+
session.commit()
302303
return request_row
303304

304305
@celery_app.task
305306
def approve_request(user_name):
306-
request = get_remove_row_by_user_name(user_name).to_request()
307+
stored_request = get_remove_row_by_user_name(user_name)
308+
if not stored_request:
309+
return
310+
request = stored_request.to_request()
307311
create_account.delay(request)
308312
dispatch_event('ocflib.account_approved', request=request.to_dict())
309313

310314
@celery_app.task
311315
def reject_request(user_name):
312316
stored_request = get_remove_row_by_user_name(user_name)
317+
if not stored_request:
318+
return
313319
request = stored_request.to_request()
314320
send_rejected_mail(request, stored_request.reason)
315321
dispatch_event('ocflib.account_rejected', request=request.to_dict())

tests/account/submission_test.py

+22
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@ def test_approve_request(celery_app, fake_new_account_request, session_with_requ
123123
]
124124

125125

126+
def test_approve_request_invalid(celery_app, fake_new_account_request, session_with_requests, tasks):
127+
assert len(session_with_requests.query(StoredNewAccountRequest).all()) == 2
128+
tasks.approve_request('keur')
129+
130+
# invalid request, nothing changed
131+
assert len(session_with_requests.query(StoredNewAccountRequest).all()) == 2
132+
tasks.create_account.delay.assert_not_called()
133+
assert celery_app._sent_messages == []
134+
135+
126136
@mock.patch('ocflib.account.submission.send_rejected_mail')
127137
def test_reject_request(send_rejected_mail, celery_app, fake_new_account_request, session_with_requests, tasks):
128138
tasks.reject_request(fake_new_account_request.user_name)
@@ -139,6 +149,18 @@ def test_reject_request(send_rejected_mail, celery_app, fake_new_account_request
139149
send_rejected_mail.assert_called_once_with(request, mock.ANY)
140150

141151

152+
@mock.patch('ocflib.account.submission.send_rejected_mail')
153+
def test_reject_request_invalid(send_rejected_mail, celery_app, fake_new_account_request,
154+
session_with_requests, tasks):
155+
assert len(session_with_requests.query(StoredNewAccountRequest).all()) == 2
156+
tasks.reject_request('keur')
157+
158+
# invalid request, nothing changed
159+
assert len(session_with_requests.query(StoredNewAccountRequest).all()) == 2
160+
assert celery_app._sent_messages == []
161+
send_rejected_mail.assert_not_called()
162+
163+
142164
def test_get_pending_requests(session_with_requests, tasks, fake_new_account_request):
143165
request = fake_new_account_request
144166
pending_requests = tasks.get_pending_requests()

0 commit comments

Comments
 (0)