Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
4de65abb
Commit
4de65abb
authored
Jan 09, 2017
by
Anthony Mangano
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pylint fixes
parent
6296b0c9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
3 additions
and
33 deletions
+3
-33
common/djangoapps/util/tests/test_submit_feedback.py
+3
-33
No files found.
common/djangoapps/util/tests/test_submit_feedback.py
View file @
4de65abb
...
...
@@ -17,7 +17,7 @@ from student.tests.test_configuration_overrides import fake_get_value
from
student.tests.factories
import
CourseEnrollmentFactory
TEST_SUPPORT_EMAIL
=
"support@example.com"
TEST_ZENDESK_CUSTOM_FIELD_CONFIG
=
{
"course_id"
:
1234
,
"enrollment_mode"
:
5678
}
TEST_ZENDESK_CUSTOM_FIELD_CONFIG
=
{
"course_id"
:
1234
,
"enrollment_mode"
:
5678
}
TEST_REQUEST_HEADERS
=
{
"HTTP_REFERER"
:
"test_referer"
,
"HTTP_USER_AGENT"
:
"test_user_agent"
,
...
...
@@ -25,7 +25,6 @@ TEST_REQUEST_HEADERS = {
"SERVER_NAME"
:
"test_server"
,
}
def
fake_support_backend_values
(
name
,
default
=
None
):
# pylint: disable=unused-argument
"""
Method for getting configuration override values for support email.
...
...
@@ -36,7 +35,6 @@ def fake_support_backend_values(name, default=None): # pylint: disable=unused-a
}
return
config_dict
[
name
]
@ddt
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_FEEDBACK_SUBMISSION"
:
True
})
@override_settings
(
...
...
@@ -71,7 +69,6 @@ class SubmitFeedbackTest(TestCase):
# This does not contain issue_type nor course_id to ensure that they are optional
self
.
_auth_fields
=
{
"subject"
:
"a subject"
,
"details"
:
"some details"
}
def
_build_and_run_request
(
self
,
user
,
fields
):
"""
Generate a request and invoke the view, returning the response.
...
...
@@ -90,7 +87,6 @@ class SubmitFeedbackTest(TestCase):
req
.
user
=
user
return
views
.
submit_feedback
(
req
)
def
_assert_bad_request
(
self
,
response
,
field
,
zendesk_mock_class
,
datadog_mock
):
"""
Assert that the given `response` contains correct failure data.
...
...
@@ -107,7 +103,6 @@ class SubmitFeedbackTest(TestCase):
self
.
assertFalse
(
zendesk_mock_class
.
return_value
.
mock_calls
)
self
.
assertFalse
(
datadog_mock
.
mock_calls
)
def
_test_bad_request_omit_field
(
self
,
user
,
fields
,
omit_field
,
zendesk_mock_class
,
datadog_mock
):
"""
Invoke the view with a request missing a field and assert correctness.
...
...
@@ -122,7 +117,6 @@ class SubmitFeedbackTest(TestCase):
resp
=
self
.
_build_and_run_request
(
user
,
filtered_fields
)
self
.
_assert_bad_request
(
resp
,
omit_field
,
zendesk_mock_class
,
datadog_mock
)
def
_test_bad_request_empty_field
(
self
,
user
,
fields
,
empty_field
,
zendesk_mock_class
,
datadog_mock
):
"""
Invoke the view with an empty field and assert correctness.
...
...
@@ -138,7 +132,6 @@ class SubmitFeedbackTest(TestCase):
resp
=
self
.
_build_and_run_request
(
user
,
altered_fields
)
self
.
_assert_bad_request
(
resp
,
empty_field
,
zendesk_mock_class
,
datadog_mock
)
def
_test_success
(
self
,
user
,
fields
):
"""
Generate a request, invoke the view, and assert success.
...
...
@@ -150,7 +143,6 @@ class SubmitFeedbackTest(TestCase):
resp
=
self
.
_build_and_run_request
(
user
,
fields
)
self
.
assertEqual
(
resp
.
status_code
,
200
)
def
_build_zendesk_ticket
(
self
,
recipient
,
name
,
email
,
subject
,
details
,
tags
,
custom_fields
=
None
):
"""
Build a Zendesk ticket that can be used in assertions to verify that the correct
...
...
@@ -171,7 +163,6 @@ class SubmitFeedbackTest(TestCase):
return
ticket
def
_build_zendesk_ticket_update
(
self
,
request_headers
,
username
=
None
):
"""
Build a Zendesk ticket update that can be used in assertions to verify that the correct
...
...
@@ -194,33 +185,28 @@ class SubmitFeedbackTest(TestCase):
body
.
append
(
"{}: {}"
.
format
(
text
,
request_headers
[
header
]))
body
=
"Additional information:
\n\n
"
+
"
\n
"
.
join
(
body
)
return
{
"ticket"
:
{
"comment"
:
{
"public"
:
False
,
"body"
:
body
}
}
}
return
{
"ticket"
:
{
"comment"
:
{
"public"
:
False
,
"body"
:
body
}}}
def
_assert_zendesk_called
(
self
,
zendesk_mock
,
ticket_id
,
ticket
,
ticket_update
):
"""Assert that Zendesk was called with the correct ticket and ticket_update."""
expected_zendesk_calls
=
[
mock
.
call
.
create_ticket
(
ticket
),
mock
.
call
.
update_ticket
(
ticket_id
,
ticket_update
)]
self
.
assertEqual
(
zendesk_mock
.
mock_calls
,
expected_zendesk_calls
)
def
_assert_datadog_called
(
self
,
datadog_mock
,
tags
):
"""Assert that datadog was called with the correct tags."""
expected_datadog_calls
=
[
mock
.
call
.
increment
(
views
.
DATADOG_FEEDBACK_METRIC
,
tags
=
tags
)]
self
.
assertEqual
(
datadog_mock
.
mock_calls
,
expected_datadog_calls
)
def
test_bad_request_anon_user_no_name
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an anonymous user not specifying `name`."""
self
.
_test_bad_request_omit_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"name"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"name"
,
zendesk_mock_class
,
datadog_mock
)
def
test_bad_request_anon_user_no_email
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an anonymous user not specifying `email`."""
self
.
_test_bad_request_omit_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"email"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"email"
,
zendesk_mock_class
,
datadog_mock
)
def
test_bad_request_anon_user_invalid_email
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an anonymous user specifying an invalid `email`."""
fields
=
self
.
_anon_fields
.
copy
()
...
...
@@ -228,19 +214,16 @@ class SubmitFeedbackTest(TestCase):
resp
=
self
.
_build_and_run_request
(
self
.
_anon_user
,
fields
)
self
.
_assert_bad_request
(
resp
,
"email"
,
zendesk_mock_class
,
datadog_mock
)
def
test_bad_request_anon_user_no_subject
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an anonymous user not specifying `subject`."""
self
.
_test_bad_request_omit_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"subject"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"subject"
,
zendesk_mock_class
,
datadog_mock
)
def
test_bad_request_anon_user_no_details
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an anonymous user not specifying `details`."""
self
.
_test_bad_request_omit_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"details"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_anon_user
,
self
.
_anon_fields
,
"details"
,
zendesk_mock_class
,
datadog_mock
)
def
test_valid_request_anon_user
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
Test a valid request from an anonymous user.
...
...
@@ -270,7 +253,6 @@ class SubmitFeedbackTest(TestCase):
self
.
_assert_zendesk_called
(
zendesk_mock_instance
,
ticket_id
,
ticket
,
ticket_update
)
self
.
_assert_datadog_called
(
datadog_mock
,
[
"issue_type:{}"
.
format
(
fields
[
"issue_type"
])])
@mock.patch
(
"openedx.core.djangoapps.site_configuration.helpers.get_value"
,
fake_get_value
)
def
test_valid_request_anon_user_configuration_override
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
...
...
@@ -302,7 +284,6 @@ class SubmitFeedbackTest(TestCase):
self
.
_assert_zendesk_called
(
zendesk_mock_instance
,
ticket_id
,
ticket
,
ticket_update
)
self
.
_assert_datadog_called
(
datadog_mock
,
[
"issue_type:{}"
.
format
(
fields
[
"issue_type"
])])
@data
(
"course-v1:testOrg+testCourseNumber+testCourseRun"
,
""
,
None
)
@override_settings
(
ZENDESK_CUSTOM_FIELDS
=
TEST_ZENDESK_CUSTOM_FIELD_CONFIG
)
def
test_valid_request_anon_user_with_custom_fields
(
self
,
course_id
,
zendesk_mock_class
,
datadog_mock
):
...
...
@@ -348,23 +329,20 @@ class SubmitFeedbackTest(TestCase):
ticket_update
=
self
.
_build_zendesk_ticket_update
(
TEST_REQUEST_HEADERS
)
self
.
_test_success
(
self
.
_anon_
user
,
fields
)
self
.
_test_success
(
user
,
fields
)
self
.
_assert_zendesk_called
(
zendesk_mock_instance
,
ticket_id
,
ticket
,
ticket_update
)
self
.
_assert_datadog_called
(
datadog_mock
,
datadog_tags
)
def
test_bad_request_auth_user_no_subject
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an authenticated user not specifying `subject`."""
self
.
_test_bad_request_omit_field
(
self
.
_auth_user
,
self
.
_auth_fields
,
"subject"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_auth_user
,
self
.
_auth_fields
,
"subject"
,
zendesk_mock_class
,
datadog_mock
)
def
test_bad_request_auth_user_no_details
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test a request from an authenticated user not specifying `details`."""
self
.
_test_bad_request_omit_field
(
self
.
_auth_user
,
self
.
_auth_fields
,
"details"
,
zendesk_mock_class
,
datadog_mock
)
self
.
_test_bad_request_empty_field
(
self
.
_auth_user
,
self
.
_auth_fields
,
"details"
,
zendesk_mock_class
,
datadog_mock
)
def
test_valid_request_auth_user
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
Test a valid request from an authenticated user.
...
...
@@ -394,7 +372,6 @@ class SubmitFeedbackTest(TestCase):
self
.
_assert_zendesk_called
(
zendesk_mock_instance
,
ticket_id
,
ticket
,
ticket_update
)
self
.
_assert_datadog_called
(
datadog_mock
,
[])
@data
(
(
"course-v1:testOrg+testCourseNumber+testCourseRun"
,
True
),
(
"course-v1:testOrg+testCourseNumber+testCourseRun"
,
False
),
...
...
@@ -461,7 +438,6 @@ class SubmitFeedbackTest(TestCase):
self
.
_assert_zendesk_called
(
zendesk_mock_instance
,
ticket_id
,
ticket
,
ticket_update
)
self
.
_assert_datadog_called
(
datadog_mock
,
datadog_tags
)
def
test_get_request
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""Test that a GET results in a 405 even with all required fields"""
req
=
self
.
_request_factory
.
get
(
"/submit_feedback"
,
data
=
self
.
_anon_fields
)
...
...
@@ -474,7 +450,6 @@ class SubmitFeedbackTest(TestCase):
self
.
assertFalse
(
zendesk_mock_class
.
mock_calls
)
self
.
assertFalse
(
datadog_mock
.
mock_calls
)
def
test_zendesk_error_on_create
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
Test Zendesk returning an error on ticket creation.
...
...
@@ -489,7 +464,6 @@ class SubmitFeedbackTest(TestCase):
self
.
assertFalse
(
resp
.
content
)
self
.
_assert_datadog_called
(
datadog_mock
,
[
"issue_type:{}"
.
format
(
self
.
_anon_fields
[
"issue_type"
])])
def
test_zendesk_error_on_update
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
Test for Zendesk returning an error on ticket update.
...
...
@@ -505,7 +479,6 @@ class SubmitFeedbackTest(TestCase):
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
_assert_datadog_called
(
datadog_mock
,
[
"issue_type:{}"
.
format
(
self
.
_anon_fields
[
"issue_type"
])])
@mock.patch.dict
(
"django.conf.settings.FEATURES"
,
{
"ENABLE_FEEDBACK_SUBMISSION"
:
False
})
def
test_not_enabled
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
...
...
@@ -516,7 +489,6 @@ class SubmitFeedbackTest(TestCase):
with
self
.
assertRaises
(
Http404
):
self
.
_build_and_run_request
(
self
.
_anon_user
,
self
.
_anon_fields
)
def
test_zendesk_not_configured
(
self
,
zendesk_mock_class
,
datadog_mock
):
"""
Test for Zendesk not fully configured in `settings`.
...
...
@@ -533,7 +505,6 @@ class SubmitFeedbackTest(TestCase):
test_case
(
"django.conf.settings.ZENDESK_USER"
)
test_case
(
"django.conf.settings.ZENDESK_API_KEY"
)
@mock.patch
(
"openedx.core.djangoapps.site_configuration.helpers.get_value"
,
fake_support_backend_values
)
def
test_valid_request_over_email
(
self
,
zendesk_mock_class
,
datadog_mock
):
# pylint: disable=unused-argument
with
mock
.
patch
(
"util.views.send_mail"
)
as
patched_send_email
:
...
...
@@ -542,7 +513,6 @@ class SubmitFeedbackTest(TestCase):
self
.
assertIn
(
self
.
_anon_fields
[
"email"
],
str
(
patched_send_email
.
call_args
))
self
.
assertEqual
(
resp
.
status_code
,
200
)
@mock.patch
(
"openedx.core.djangoapps.site_configuration.helpers.get_value"
,
fake_support_backend_values
)
def
test_exception_request_over_email
(
self
,
zendesk_mock_class
,
datadog_mock
):
# pylint: disable=unused-argument
with
mock
.
patch
(
"util.views.send_mail"
,
side_effect
=
SMTPException
)
as
patched_send_email
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment