seitime-frappe/frappe/tests/test_cors.py
Gavin D'souza e407b78506 chore: Drop dead and deprecated code
* Remove six for PY2 compatability since our dependencies are not, PY2
  is legacy.
* Removed usages of utils from future/past libraries since they are
  deprecated. This includes 'from __future__ ...' and 'from past...'
  statements.
* Removed compatibility imports for PY2, switched from six imports to
  standard library imports.
* Removed utils code blocks that handle operations depending on PY2/3
  versions.
* Removed 'from __future__ ...' lines from templates/code generators
* Used PY3 syntaxes in place of PY2 compatible blocks. eg: metaclass
2021-05-26 15:31:29 +05:30

55 lines
1.9 KiB
Python

# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
import frappe, unittest
from werkzeug.wrappers import Response
from frappe.app import process_response
HEADERS = ('Access-Control-Allow-Origin', 'Access-Control-Allow-Credentials',
'Access-Control-Allow-Methods', 'Access-Control-Allow-Headers')
class TestCORS(unittest.TestCase):
def make_request_and_test(self, origin='http://example.com', absent=False):
self.origin = origin
headers = {}
if origin:
headers = {'Origin': origin}
frappe.utils.set_request(headers=headers)
self.response = Response()
process_response(self.response)
for header in HEADERS:
if absent:
self.assertNotIn(header, self.response.headers)
else:
if header == 'Access-Control-Allow-Origin':
self.assertEqual(self.response.headers.get(header), self.origin)
else:
self.assertIn(header, self.response.headers)
def test_cors_disabled(self):
frappe.conf.allow_cors = None
self.make_request_and_test('http://example.com', True)
def test_request_without_origin(self):
frappe.conf.allow_cors = 'http://example.com'
self.make_request_and_test(None, True)
def test_valid_origin(self):
frappe.conf.allow_cors = 'http://example.com'
self.make_request_and_test()
frappe.conf.allow_cors = "*"
self.make_request_and_test()
frappe.conf.allow_cors = ['http://example.com', 'https://example.com']
self.make_request_and_test()
def test_invalid_origin(self):
frappe.conf.allow_cors = 'http://example1.com'
self.make_request_and_test(absent=True)
frappe.conf.allow_cors = ['http://example1.com', 'https://example.com']
self.make_request_and_test(absent=True)