* Use full LMS imports paths in LMS settings and urls modules * Use full LMS import paths in Studio settings and urls modules * Import from lms.djangoapps.badges instead of badges * Import from lms.djangoapps.branding instead of branding * Import from lms.djangoapps.bulk_email instead of bulk_email * Import from lms.djangoapps.bulk_enroll instead of bulk_enroll * Import from lms.djangoapps.ccx instead of ccx * Import from lms.djangoapps.course_api instead of course_api * Import from lms.djangoapps.course_blocks instead of course_blocks * Import from lms.djangoapps.course_wiki instead of course_wiki * Import from lms.djangoapps.courseware instead of courseware * Import from lms.djangoapps.dashboard instead of dashboard * Import from lms.djangoapps.discussion import discussion * Import from lms.djangoapps.email_marketing instead of email_marketing * Import from lms.djangoapps.experiments instead of experiments * Import from lms.djangoapps.gating instead of gating * Import from lms.djangoapps.grades instead of grades * Import from lms.djangoapps.instructor_analytics instead of instructor_analytics * Import form lms.djangoapps.lms_xblock instead of lms_xblock * Import from lms.djangoapps.lti_provider instead of lti_provider * Import from lms.djangoapps.mobile_api instead of mobile_api * Import from lms.djangoapps.rss_proxy instead of rss_proxy * Import from lms.djangoapps.static_template_view instead of static_template_view * Import from lms.djangoapps.survey instead of survey * Import from lms.djangoapps.verify_student instead of verify_student * Stop suppressing EdxPlatformDeprecatedImportWarnings
73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
"""
|
|
Tests for the rss_proxy views
|
|
"""
|
|
|
|
|
|
from django.test import TestCase
|
|
from django.urls import reverse
|
|
from mock import Mock, patch
|
|
|
|
from lms.djangoapps.rss_proxy.models import WhitelistedRssUrl
|
|
|
|
|
|
class RssProxyViewTests(TestCase):
|
|
""" Tests for the rss_proxy views """
|
|
|
|
def setUp(self):
|
|
super(RssProxyViewTests, self).setUp()
|
|
|
|
self.whitelisted_url1 = 'http://www.example.com'
|
|
self.whitelisted_url2 = 'http://www.example.org'
|
|
self.non_whitelisted_url = 'http://www.example.net'
|
|
self.rss = '''
|
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
<rss version="2.0">
|
|
<channel>
|
|
<title></title>
|
|
<link>http://www.example.com/rss</link>
|
|
<description></description>
|
|
<language>en</language>
|
|
<item>
|
|
<title>Example</title>
|
|
<link>http://www.example.com/rss/item</link>
|
|
<description>Example item description</description>
|
|
<pubDate>Fri, 13 May 1977 00:00:00 +0000</pubDate>
|
|
</item>
|
|
</channel>
|
|
</rss>
|
|
'''
|
|
WhitelistedRssUrl.objects.create(url=self.whitelisted_url1)
|
|
WhitelistedRssUrl.objects.create(url=self.whitelisted_url2)
|
|
|
|
@patch('lms.djangoapps.rss_proxy.views.requests.get')
|
|
def test_proxy_with_whitelisted_url(self, mock_requests_get):
|
|
"""
|
|
Test the proxy view with a whitelisted URL
|
|
"""
|
|
mock_requests_get.return_value = Mock(status_code=200, content=self.rss)
|
|
resp = self.client.get('%s?url=%s' % (reverse('rss_proxy:proxy'), self.whitelisted_url1))
|
|
self.assertEqual(resp.status_code, 200)
|
|
self.assertEqual(resp['Content-Type'], 'application/xml')
|
|
self.assertEqual(resp.content.decode('utf-8'), self.rss)
|
|
|
|
@patch('lms.djangoapps.rss_proxy.views.requests.get')
|
|
def test_proxy_with_whitelisted_url_404(self, mock_requests_get):
|
|
"""
|
|
Test the proxy view with a whitelisted URL that is not found
|
|
"""
|
|
mock_requests_get.return_value = Mock(status_code=404)
|
|
resp = self.client.get('%s?url=%s' % (reverse('rss_proxy:proxy'), self.whitelisted_url2))
|
|
print(resp.status_code)
|
|
print(resp.content)
|
|
print(resp['Content-Type'])
|
|
self.assertEqual(resp.status_code, 404)
|
|
self.assertEqual(resp['Content-Type'], 'application/xml')
|
|
self.assertEqual(resp.content.decode('utf-8'), '')
|
|
|
|
def test_proxy_with_non_whitelisted_url(self):
|
|
"""
|
|
Test the proxy view with a non-whitelisted URL
|
|
"""
|
|
resp = self.client.get('%s?url=%s' % (reverse('rss_proxy:proxy'), self.non_whitelisted_url))
|
|
self.assertEqual(resp.status_code, 404)
|