def test_is_status_code(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request.is_status(500), True)
    def test_request_gets_all_headers(self):
        app = App()
        app.bind('Request', Request(wsgi_request))
        request = app.make('Request').load_app(app)

        request.header('TEST1', 'set_this_item')
        self.assertEqual(request.get_headers(), [('TEST1', 'set_this_item')])
    def test_request_gets_int_status(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request.get_status(), 500)
    def test_request_loads_app(self):
        app = App()
        app.bind('Request', self.request)
        app.make('Request').load_app(app)

        self.assertEqual(self.request.app(), app)
        self.assertEqual(app.make('Request').app(), app)
    def test_request_redirection(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'TestController@testing').name('test.id'),
            Get('/test/url/object', TestController.show).name('test.object')
        ])
        request = app.make('Request').load_app(app)

        self.assertEqual(
            request.redirect('/test/url/@id', {
                'id': 1
            }).redirect_url, '/test/url/1')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(name='test.url').redirect_url, '/test/url')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(name='test.id', params={
                'id': 1
            }).redirect_url, '/test/url/1')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(controller='TestController@show').redirect_url,
            '/test/url')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(controller=TestController.show).redirect_url,
            '/test/url/object')
        request.redirect_url = None
        self.assertEqual(
            request.redirect('some/url').redirect_url, '/some/url')
Esempio n. 6
0
    class TestMailgunDriver:

        def setup_method(self):
            self.app = App()
            self.app.bind('Container', self.app)

            self.app.bind('Test', object)
            self.app.bind('MailConfig', mail)
            self.app.bind('MailSmtpDriver', MailDriver)
            self.app.bind('MailMailgunDriver', Mailgun)
            self.app.bind('View', View(self.app))

        def test_mailgun_driver(self):
            user = UserMock
            user.email = '*****@*****.**'

            assert MailManager(self.app).driver('mailgun').to(user).to_address == '*****@*****.**'

        def test_mail_renders_template(self):
            assert 'MasoniteTesting' in MailManager(self.app).driver('mailgun').to(
                '*****@*****.**').template('mail/welcome', {'to': 'MasoniteTesting'}).message_body

        def test_mail_sends_with_queue_and_without_queue(self):
            if env('RUN_MAIL'):
                assert MailManager(self.app).driver('mailgun').to('*****@*****.**').send('test queue') == None
                assert MailManager(self.app).driver('mailgun').queue().to('*****@*****.**').send('test queue') == None
Esempio n. 7
0
    def test_request_sets_int_status_code(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        assert request.get_status_code() == '500 Internal Server Error'
 def test_maintenance_mode_middleware_is_not_down(self):
     app = App()
     app.bind('Request', self.request)
     app.bind('StatusCode', '200 OK')
     request = app.make('Request').load_app(app)
     self.middleware.before()
     assert request.get_status_code() == '200 OK'
    def test_request_sets_invalid_int_status_code(self):
        with self.assertRaises(InvalidHTTPStatusCode):
            app = App()
            app.bind('Request', self.request)
            request = app.make('Request').load_app(app)

            request.status(600)
Esempio n. 10
0
def test_throws_exception_if_too_many_bindings():
    app = App()
    REQUEST.cookies = ['hey']
    app.bind('Request', REQUEST)
    app.bind('Route', Get().route('test/', None))
    with pytest.raises(TypeError, message="should raise error"):
        app.resolve(functest)
Esempio n. 11
0
def test_cache_sets_times():
    container = App()

    container.bind('CacheConfig', cache)
    container.bind('CacheDiskDriver', CacheDiskDriver)
    container.bind('CacheManager', CacheManager(container))
    container.bind('Application', container)
    container.bind('Cache', container.make('CacheManager').driver('disk'))

    cache_driver = container.make('Cache')

    cache_driver.store_for('key_for_1_minute', 'value', 1, 'minute')
    cache_driver.store_for('key_for_1_hour', 'value', 1, 'hour')
    cache_driver.store_for('key_for_1_day', 'value', 1, 'day')
    cache_driver.store_for('key_for_1_month', 'value', 1, 'month')
    cache_driver.store_for('key_for_1_year', 'value', 1, 'year')

    assert cache_driver.is_valid('key_for_1_minute')
    assert cache_driver.is_valid('key_for_1_hour')
    assert cache_driver.is_valid('key_for_1_day')
    assert cache_driver.is_valid('key_for_1_month')
    assert cache_driver.is_valid('key_for_1_year')

    assert cache_driver.get('key_for_1_minute') == 'value'
    assert cache_driver.get('key_for_1_hour') == 'value'
    assert cache_driver.get('key_for_1_day') == 'value'
    assert cache_driver.get('key_for_1_month') == 'value'
    assert cache_driver.get('key_for_1_year') == 'value'


    for cache_file in glob.glob('bootstrap/cache/key*'):
        os.remove(cache_file)
def test_can_call_container_with_annotation_with_self_parameter():
    app = App()

    app.bind('Request', Request)
    app.bind('Get', Get().route('url', None))

    assert app.resolve(ContainerTest().testboot) == app.make('Request')
Esempio n. 13
0
def test_request_loads_app():
    app = App()
    app.bind('Request', REQUEST)
    app.make('Request').load_app(app)

    assert REQUEST.app() == app
    assert app.make('Request').app() == app
Esempio n. 14
0
class TestResponseProvider:
    def setup_method(self):
        self.app = App()
        self.provider = StartResponseProvider()

        self.app.bind('Response', None)
        self.app.bind('Request', Request(generate_wsgi()).load_app(self.app))
        self.app.bind('Headers', [])

        self.provider.app = self.app

    def test_response_boot_throws_response_exception(self):
        with pytest.raises(ResponseError):
            self.provider.boot(self.app.make('Request'),
                               self.app.make('Response'),
                               self.app.make('Headers'))

    def test_response_encodes_header_response_to_bytes(self):
        encoded_bytes = bytes('test', 'utf-8')
        self.app.bind('Response', 'test')
        self.app.bind('StatusCode', '200 OK')

        self.provider.boot(self.app.make('Request'), self.app.make('Response'),
                           self.app.make('Headers'))

        assert self.app.make('Headers')[0] == ("Content-Length",
                                               str(len(encoded_bytes)))

    def test_redirect_sets_redirection_headers(self):
        self.app.make('Request').redirect_url = '/redirection'
        self.provider.boot(self.app.make('Request'), self.app.make('Response'),
                           self.app.make('Headers'))
        assert self.app.make('StatusCode') == '302 OK'
        assert ('Location', '/redirection') in self.app.make('Headers')
def test_can_call_container_with_self_parameter():
    app = App()

    app.bind('Request', object)
    app.bind('Get', object)

    assert app.resolve(ContainerTest().boot) == app.make('Request')
Esempio n. 16
0
    def test_can_get_code_by_value(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        assert request._get_status_code_by_value('500 Internal Server Error') == 500
Esempio n. 17
0
def test_app_binds():
    app = App()

    app.bind('test1', object)
    app.bind('test2', object)

    assert app.providers == {'test1': object, 'test2': object}
    def test_request_loads_app(self):
        app = App()
        app.bind('Request', self.request)
        app.make('Request').load_app(app)

        assert self.request.app() == app
        assert app.make('Request').app() == app
Esempio n. 19
0
def test_request_sets_status_code():
    app = App()
    app.bind('Request', REQUEST)
    request = app.make('Request').load_app(app)

    request.status('200 OK')
    assert request.get_status_code() == '200 OK'
Esempio n. 20
0
    def create_container(self):
        container = App()

        container.bind('WSGI', object)
        container.bind('Application', application)
        container.bind('Providers', providers)

        """
        |--------------------------------------------------------------------------
        | Bind all service providers
        |--------------------------------------------------------------------------
        |
        | Let's register everything into the Service Container. Once everything is
        | in the container we can run through all the boot methods. For reasons
        | some providers don't need to execute with every request and should
        | only run once when the server is started. Providers will be ran
        | once if the wsgi attribute on a provider is False.
        |
        """

        for provider in container.make('Providers').PROVIDERS:
            provider().load_app(container).register()

        for provider in container.make('Providers').PROVIDERS:
            located_provider = provider().load_app(container)

            if located_provider.wsgi is False:
                container.resolve(located_provider.boot)

            """
        |--------------------------------------------------------------------------
        | Startup the Service Container
        |--------------------------------------------------------------------------
        |
        | Instantiate the Service Container so we can bind classes into it and 
        | bind the environ variable that is created by the WSGI server into
        | the container.
        |
        """

        container.bind('Environ', generate_wsgi())

        """
        |--------------------------------------------------------------------------
        | Execute All Service Providers
        |--------------------------------------------------------------------------
        |
        | Run all service provider boot methods if the wsgi attribute is true.
        |
        """

        for provider in container.make('Providers').PROVIDERS:
            located_provider = provider().load_app(container)
            container.bind('Response', 'test')
            if located_provider.wsgi is True:
                container.resolve(located_provider.boot)

        self.container = container
        return self
Esempio n. 21
0
def test_redirect_compiles_url_with_http():
    app = App()
    app.bind('Request', REQUEST)
    request = app.make('Request').load_app(app)

    request.redirect('http://google.com')

    assert request.compile_route_to_url() == 'http://google.com'
Esempio n. 22
0
def test_redirect_compiles_url_with_multiple_parameters():
    app = App()
    app.bind('Request', REQUEST)
    request = app.make('Request').load_app(app)

    request.redirect('test/@id/@test').send({'id': '1', 'test': 'user'})

    assert request.compile_route_to_url() == '/test/1/user'
Esempio n. 23
0
def test_redirect_compiles_url():
    app = App()
    app.bind('Request', REQUEST)
    request = app.make('Request').load_app(app)

    request.redirect('test/url')

    assert request.compile_route_to_url() == '/test/url'
Esempio n. 24
0
def test_redirect_compiles_url_with_trailing_slash():
    app = App()
    app.bind('Request', REQUEST)
    request = app.make('Request').load_app(app)

    request.redirect('test/url/here/')

    assert request.compile_route_to_url() == '/test/url/here/'
    def test_request_sets_status_code(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('StatusCode', '404 Not Found')
        request = app.make('Request').load_app(app)

        request.status('200 OK')
        assert request.get_status_code() == '200 OK'
Esempio n. 26
0
class TestFrameworkHooks:
    def setup_method(self):
        self.app = App()
        self.app.bind('SentryExceptionHook', SentryExceptionHookMock())
        self.app.bind('HookHandler', Hook(self.app))

    def test_exception_handler(self):
        assert self.app.make('HookHandler').fire('*ExceptionHook') is None
    def test_request_gets_correct_header(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        assert request.header('UPGRADE_INSECURE_REQUESTS') == '1'
        assert request.header('RAW_URI') == '/'
        assert request.header('NOT_IN') == None
    def test_redirect_compiles_url_with_http(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = "http://google.com"

        assert request.compile_route_to_url(route) == 'http://google.com'
    def test_redirect_compiles_url_with_trailing_slash(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = 'test/url/here/'

        assert request.compile_route_to_url(route) == '/test/url/here/'
    def test_redirect_compiles_url(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = '/test/url'

        assert request.compile_route_to_url(route) == '/test/url'
Esempio n. 31
0
from bootstrap.start import app
from config import application, providers

"""
|--------------------------------------------------------------------------
| Instantiate Container And Perform Important Bindings
|--------------------------------------------------------------------------
|
| Some Service providers need important bindings like the WSGI application
| and the application configuration file before they boot.
|
"""

container = App()

container.bind('WSGI', app)
container.bind('Application', application)
container.bind('Container', container)

container.bind('ProvidersConfig', providers)
container.bind('Providers', [])
container.bind('WSGIProviders', [])

"""
|--------------------------------------------------------------------------
| Bind all service providers
|--------------------------------------------------------------------------
|
| Let's register everything into the Service Container. Once everything is
| in the container we can run through all the boot methods. For reasons
| some providers don't need to execute with every request and should