| | |
| | | import unittest |
| | | from . import dummy |
| | | |
| | | |
| | | class TestPRequestCommand(unittest.TestCase): |
| | | def _getTargetClass(self): |
| | | from pyramid.scripts.prequest import PRequestCommand |
| | | |
| | | return PRequestCommand |
| | | |
| | | def _makeOne(self, argv, headers=None): |
| | |
| | | self._path_info = environ['PATH_INFO'] |
| | | start_request('200 OK', headers or []) |
| | | return [b'abc'] |
| | | |
| | | self.loader = dummy.DummyLoader(app=helloworld) |
| | | self._out = [] |
| | | cmd._get_config_loader = self.loader |
| | |
| | | def test_command_not_enough_args(self): |
| | | command = self._makeOne([]) |
| | | command.run() |
| | | self.assertEqual(self._out, ['You must provide at least two arguments']) |
| | | self.assertEqual( |
| | | self._out, ['You must provide at least two arguments'] |
| | | ) |
| | | |
| | | def test_command_two_args(self): |
| | | command = self._makeOne(['', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | command = self._makeOne( |
| | | ['', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._path_info, '/') |
| | | self.assertEqual(self.loader.uri.path, 'development.ini') |
| | |
| | | self.assertEqual(self._out, ['abc']) |
| | | |
| | | def test_command_path_doesnt_start_with_slash(self): |
| | | command = self._makeOne(['', 'development.ini', 'abc'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | command = self._makeOne( |
| | | ['', 'development.ini', 'abc'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._path_info, '/abc') |
| | | self.assertEqual(self.loader.uri.path, 'development.ini') |
| | | self.assertEqual(self._out, ['abc']) |
| | | |
| | | def test_command_has_bad_config_header(self): |
| | | command = self._makeOne( |
| | | ['', '--header=name','development.ini', '/']) |
| | | command = self._makeOne(['', '--header=name', 'development.ini', '/']) |
| | | command.run() |
| | | self.assertEqual( |
| | | self._out[0], |
| | | ("Bad --header=name option, value must be in the form " |
| | | "'name:value'")) |
| | | ( |
| | | "Bad --header=name option, value must be in the form " |
| | | "'name:value'" |
| | | ), |
| | | ) |
| | | |
| | | def test_command_has_good_header_var(self): |
| | | command = self._makeOne( |
| | | ['', '--header=name:value','development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | ['', '--header=name:value', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['HTTP_NAME'], 'value') |
| | | self.assertEqual(self._path_info, '/') |
| | |
| | | |
| | | def test_command_w_basic_auth(self): |
| | | command = self._makeOne( |
| | | ['', '--login=user:password', |
| | | '--header=name:value','development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | [ |
| | | '', |
| | | '--login=user:password', |
| | | '--header=name:value', |
| | | 'development.ini', |
| | | '/', |
| | | ], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['HTTP_NAME'], 'value') |
| | | self.assertEqual(self._environ['HTTP_AUTHORIZATION'], |
| | | 'Basic dXNlcjpwYXNzd29yZA==') |
| | | self.assertEqual( |
| | | self._environ['HTTP_AUTHORIZATION'], 'Basic dXNlcjpwYXNzd29yZA==' |
| | | ) |
| | | self.assertEqual(self._path_info, '/') |
| | | self.assertEqual(self._out, ['abc']) |
| | | |
| | | def test_command_has_content_type_header_var(self): |
| | | command = self._makeOne( |
| | | ['', '--header=content-type:app/foo','development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | ['', '--header=content-type:app/foo', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['CONTENT_TYPE'], 'app/foo') |
| | | self.assertEqual(self._path_info, '/') |
| | |
| | | |
| | | def test_command_has_multiple_header_vars(self): |
| | | command = self._makeOne( |
| | | ['', |
| | | '--header=name:value', |
| | | '--header=name2:value2', |
| | | 'development.ini', |
| | | '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')] |
| | | ) |
| | | [ |
| | | '', |
| | | '--header=name:value', |
| | | '--header=name2:value2', |
| | | 'development.ini', |
| | | '/', |
| | | ], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['HTTP_NAME'], 'value') |
| | | self.assertEqual(self._environ['HTTP_NAME2'], 'value2') |
| | |
| | | self.assertEqual(self._out, ['abc']) |
| | | |
| | | def test_command_method_get(self): |
| | | command = self._makeOne(['', '--method=GET', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | command = self._makeOne( |
| | | ['', '--method=GET', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['REQUEST_METHOD'], 'GET') |
| | | self.assertEqual(self._path_info, '/') |
| | |
| | | |
| | | def test_command_method_post(self): |
| | | from pyramid.compat import NativeIO |
| | | command = self._makeOne(['', '--method=POST', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | |
| | | command = self._makeOne( |
| | | ['', '--method=POST', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | stdin = NativeIO() |
| | | command.stdin = stdin |
| | | command.run() |
| | |
| | | |
| | | def test_command_method_put(self): |
| | | from pyramid.compat import NativeIO |
| | | command = self._makeOne(['', '--method=PUT', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | |
| | | command = self._makeOne( |
| | | ['', '--method=PUT', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | stdin = NativeIO() |
| | | command.stdin = stdin |
| | | command.run() |
| | |
| | | |
| | | def test_command_method_patch(self): |
| | | from pyramid.compat import NativeIO |
| | | command = self._makeOne(['', '--method=PATCH', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | |
| | | command = self._makeOne( |
| | | ['', '--method=PATCH', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | stdin = NativeIO() |
| | | command.stdin = stdin |
| | | command.run() |
| | |
| | | |
| | | def test_command_method_propfind(self): |
| | | from pyramid.compat import NativeIO |
| | | command = self._makeOne(['', '--method=PROPFIND', 'development.ini', |
| | | '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | |
| | | command = self._makeOne( |
| | | ['', '--method=PROPFIND', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | stdin = NativeIO() |
| | | command.stdin = stdin |
| | | command.run() |
| | |
| | | |
| | | def test_command_method_options(self): |
| | | from pyramid.compat import NativeIO |
| | | command = self._makeOne(['', '--method=OPTIONS', 'development.ini', |
| | | '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | |
| | | command = self._makeOne( |
| | | ['', '--method=OPTIONS', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | stdin = NativeIO() |
| | | command.stdin = stdin |
| | | command.run() |
| | |
| | | self.assertEqual(self._out, ['abc']) |
| | | |
| | | def test_command_with_query_string(self): |
| | | command = self._makeOne(['', 'development.ini', '/abc?a=1&b=2&c'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | command = self._makeOne( |
| | | ['', 'development.ini', '/abc?a=1&b=2&c'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._environ['QUERY_STRING'], 'a=1&b=2&c') |
| | | self.assertEqual(self._path_info, '/abc') |
| | |
| | | def test_command_display_headers(self): |
| | | command = self._makeOne( |
| | | ['', '--display-headers', 'development.ini', '/'], |
| | | [('Content-Type', 'text/html; charset=UTF-8')]) |
| | | [('Content-Type', 'text/html; charset=UTF-8')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._path_info, '/') |
| | | self.assertEqual( |
| | | self._out, |
| | | ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc']) |
| | | ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc'], |
| | | ) |
| | | |
| | | def test_command_response_has_no_charset(self): |
| | | command = self._makeOne(['', '--method=GET', 'development.ini', '/'], |
| | | headers=[('Content-Type', 'image/jpeg')]) |
| | | command = self._makeOne( |
| | | ['', '--method=GET', 'development.ini', '/'], |
| | | headers=[('Content-Type', 'image/jpeg')], |
| | | ) |
| | | command.run() |
| | | self.assertEqual(self._path_info, '/') |
| | | |
| | |
| | | class Test_main(unittest.TestCase): |
| | | def _callFUT(self, argv): |
| | | from pyramid.scripts.prequest import main |
| | | |
| | | return main(argv, True) |
| | | |
| | | def test_it(self): |