diff --git a/lms/djangoapps/verify_student/tests/test_views.py b/lms/djangoapps/verify_student/tests/test_views.py
index 24180fc710..20933bd689 100644
--- a/lms/djangoapps/verify_student/tests/test_views.py
+++ b/lms/djangoapps/verify_student/tests/test_views.py
@@ -140,6 +140,20 @@ class TestCreateOrderView(ModuleStoreTestCase):
self.assertEquals(response.status_code, 400)
self.assertIn('This course doesn\'t support verified certificates', response.content)
+ @patch.dict(settings.FEATURES, {'AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING': True})
+ def test_create_order_fail_with_get(self):
+ """
+ Test that create_order will not work if wrong http method used
+ """
+ create_order_post_data = {
+ 'contribution': 50,
+ 'course_id': self.course_id,
+ 'face_image': ',',
+ 'photo_id_image': ','
+ }
+ response = self.client.get(reverse('verify_student_create_order'), create_order_post_data)
+ self.assertEqual(response.status_code, 405)
+
@patch.dict(settings.FEATURES, {'AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING': True})
def test_create_order_success(self):
"""
diff --git a/lms/djangoapps/verify_student/views.py b/lms/djangoapps/verify_student/views.py
index 51969c5d7e..c5bbda25cc 100644
--- a/lms/djangoapps/verify_student/views.py
+++ b/lms/djangoapps/verify_student/views.py
@@ -167,6 +167,7 @@ class VerifiedView(View):
return render_to_response('verify_student/verified.html', context)
+@require_POST
@login_required
def create_order(request):
"""
diff --git a/lms/static/js/spec/photocapture_spec.js b/lms/static/js/spec/photocapture_spec.js
index bcac881188..14a76bade9 100644
--- a/lms/static/js/spec/photocapture_spec.js
+++ b/lms/static/js/spec/photocapture_spec.js
@@ -4,7 +4,7 @@ define(['backbone', 'jquery', 'js/verify_student/photocapture'],
describe("Photo Verification", function () {
beforeEach(function () {
- setFixtures('

');
+ setFixtures('
');
});
it('retake photo', function () {
@@ -27,6 +27,7 @@ define(['backbone', 'jquery', 'js/verify_student/photocapture'],
});
submitToPaymentProcessing();
expect(window.submitForm).toHaveBeenCalled();
+ expect($("#pay_button")).toHaveClass("is-disabled");
});
it('Error during process', function () {
@@ -36,8 +37,18 @@ define(['backbone', 'jquery', 'js/verify_student/photocapture'],
spyOn($, "ajax").andCallFake(function (e) {
e.error({});
});
+ spyOn($.fn, "addClass").andCallThrough();
+ spyOn($.fn, "removeClass").andCallThrough();
+
submitToPaymentProcessing();
expect(window.showSubmissionError).toHaveBeenCalled();
+
+ // make sure the button isn't disabled
+ expect($("#pay_button")).not.toHaveClass("is-disabled");
+
+ // but also make sure that it was disabled during the ajax call
+ expect($.fn.addClass).toHaveBeenCalledWith("is-disabled");
+ expect($.fn.removeClass).toHaveBeenCalledWith("is-disabled");
});
});
diff --git a/lms/static/js/verify_student/photocapture.js b/lms/static/js/verify_student/photocapture.js
index dc31f86386..f1507b0322 100644
--- a/lms/static/js/verify_student/photocapture.js
+++ b/lms/static/js/verify_student/photocapture.js
@@ -69,6 +69,7 @@ function refereshPageMessage() {
}
var submitToPaymentProcessing = function() {
+ $("#pay_button").addClass('is-disabled');
var contribution_input = $("input[name='contribution']:checked")
var contribution = 0;
if(contribution_input.attr('id') == 'contribution-other') {
@@ -95,6 +96,7 @@ var submitToPaymentProcessing = function() {
}
},
error:function(xhr,status,error) {
+ $("#pay_button").removeClass('is-disabled');
showSubmissionError()
}
});
diff --git a/lms/templates/verify_student/verified.html b/lms/templates/verify_student/verified.html
index d90da34f35..9e59546c8c 100644
--- a/lms/templates/verify_student/verified.html
+++ b/lms/templates/verify_student/verified.html
@@ -12,6 +12,7 @@