Skip to content

Commit

Permalink
fix: Add additional class for recaptcha and add teardown
Browse files Browse the repository at this point in the history
  • Loading branch information
kovalch committed Jul 2, 2024
1 parent 3b37af1 commit 44a3f2e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 15 deletions.
30 changes: 16 additions & 14 deletions ckanext/subscribe/tests/test_action.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import datetime

import ckan.plugins.toolkit as tk
import mock
from ckan import model
from ckan.plugins.toolkit import ValidationError
Expand Down Expand Up @@ -223,7 +224,16 @@ def test_dataset_and_group_at_same_time(self, send_request_email):

assert not send_request_email.called

# The reCAPTCHA tests

# The reCAPTCHA tests
class TestRecaptchaOfSubscribeSignup(object):
def setup(self):
helpers.reset_db()
tk.config["ckanext.subscribe.apply_recaptcha"] = "true"

def teardown(self):
tk.config["ckanext.subscribe.apply_recaptcha"] = "false"

# mock the _verify_recaptcha function and test both
# successful and unsuccessful reCAPTCHA verification scenarios
@mock.patch("requests.post")
Expand Down Expand Up @@ -268,12 +278,9 @@ def test_verify_recaptcha_success(
)
assert subscription_obj

@mock.patch("requests.post")
@mock.patch("ckanext.subscribe.email_verification.send_request_email")
@mock.patch("ckanext.subscribe.action._verify_recaptcha")
def test_verify_recaptcha_failure(
self, mock_verify_recaptcha, send_request_email, mock_post
):
def test_verify_recaptcha_failure(self, mock_verify_recaptcha, send_request_email):
# Mocking the reCAPTCHA verification to return False
mock_verify_recaptcha.return_value = False

Expand All @@ -286,16 +293,11 @@ def test_verify_recaptcha_failure(
{},
email="[email protected]",
dataset_id=dataset["id"],
g_recaptcha_response="invalid-recaptcha-response",
)
except ValidationError as cm:
# Asserting that the error is raised due to invalid reCAPTCHA
assert_in(
'Invalid reCAPTCHA response: "g_recaptcha_response"',
str(cm.exception.error_dict),
g_recaptcha_response="wrong_recaptcha",
)

assert not send_request_email.called
except ValidationError as e:
# Asserting that the error is raised with the correct message
assert "Invalid reCAPTCHA. Please try again." in str(e.error_dict)

# Ensuring the email is not sent due to invalid reCAPTCHA
assert not send_request_email.called
Expand Down
2 changes: 1 addition & 1 deletion test.ini
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ host = 0.0.0.0
port = 5000

[app:main]
use = config:/usr/lib/ckan/venv/src/ckan/test-core.ini
use = config:../ckan/test-core.ini

# Insert any custom config settings to be used when running your extension's
# tests here.
Expand Down

0 comments on commit 44a3f2e

Please sign in to comment.