Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d3b0417

Browse files
committedJul 8, 2018
approve: handle usernames not in session
both of the added tests will fail prior to this patch. fixes #81
1 parent 8776681 commit d3b0417

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-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+
raise ValueError('User not in session')
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+
raise ValueError('User not in session')
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

+24
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ 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+
with pytest.raises(ValueError):
129+
tasks.approve_request('keur')
130+
131+
# invalid request, nothing changed
132+
assert len(session_with_requests.query(StoredNewAccountRequest).all()) == 2
133+
tasks.create_account.delay.assert_not_called()
134+
assert celery_app._sent_messages == []
135+
136+
126137
@mock.patch('ocflib.account.submission.send_rejected_mail')
127138
def test_reject_request(send_rejected_mail, celery_app, fake_new_account_request, session_with_requests, tasks):
128139
tasks.reject_request(fake_new_account_request.user_name)
@@ -139,6 +150,19 @@ def test_reject_request(send_rejected_mail, celery_app, fake_new_account_request
139150
send_rejected_mail.assert_called_once_with(request, mock.ANY)
140151

141152

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

0 commit comments

Comments
 (0)
Please sign in to comment.