示例#1
0
    def test_rest_api_auth(self):
        from ptah.rest import Api, Login
        from ptah import authentication
        self.init_ptah()

        config.get_cfg_storage(
            authentication.AUTH_PROVIDER_ID)['test'] = Provider()

        request = DummyRequest(params={'login': '******', 'password': '******'})

        login = Login(request)
        info = json.loads(login().text)

        request = DummyRequest(environ={'HTTP_X_AUTH_TOKEN': 'unknown'})
        request.matchdict = {'service': 'cms', 'subpath': ()}

        result = Api(request)
        self.assertEqual(ptah.auth_service.get_userid(), None)

        token = info['auth-token']

        request = DummyRequest(environ={'HTTP_X_AUTH_TOKEN': token})
        request.matchdict = {'service': 'cms', 'subpath': ()}

        result = Api(request)
        self.assertEqual(ptah.auth_service.get_userid(), 'testprincipal:1')
示例#2
0
    def test_rest_unknown_service(self):
        from ptah.rest import Api
        self._init_ptah()

        request = DummyRequest()
        request.matchdict = {'service': 'test', 'subpath': ()}

        api = Api(request)
        res = simplejson.loads(api.render())
        self.assertEqual(res['message'], "'test'")
        self.assertIn("KeyError: 'test'", res['traceback'])
示例#3
0
    def test_rest_response(self):
        from ptah.rest import Api, REST_ID
        self._init_ptah()

        services = config.get_cfg_storage(REST_ID)

        def service(request, action, *args):
            return HTTPNotFound()

        services['test'] = service

        request = DummyRequest(registry=self.p_config.registry)
        request.matchdict = {'service': 'test',
                             'subpath': ('action:test','1','2')}
        api = Api(request)
        res = api.render()
        self.assertIsInstance(res, HTTPNotFound)
示例#4
0
    def test_rest_response_data(self):
        import datetime
        from ptah.rest import Api, REST_ID
        self._init_ptah()

        services = config.get_cfg_storage(REST_ID)

        def service(request, action, *args):
            return {'dt': datetime.datetime.now()}

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {'service': 'test',
                             'subpath': ('action:test','1','2')}
        api = Api(request)
        res = simplejson.loads(api.render())
        self.assertIn('dt', res)
示例#5
0
    def test_rest_httpexception(self):
        from ptah.rest import Api, REST_ID
        self._init_ptah()

        services = config.get_cfg_storage(REST_ID)

        def service(request, action, *args):
            raise HTTPNotFound()

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {'service': 'test',
                             'subpath': ('action:test','1','2')}
        api = Api(request)
        res = simplejson.loads(api.render())
        self.assertEqual(
            res['message'], 'The resource could not be found.')
示例#6
0
    def test_rest_unknown_service(self):
        from ptah.rest import Api
        self.init_ptah()

        request = DummyRequest()
        request.matchdict = {'service': 'test', 'subpath': ()}

        res = json.loads(Api(request).text)
        self.assertEqual(res['message'], "'test'")
        self.assertIn("KeyError: 'test'", res['traceback'])
示例#7
0
    def test_rest_arguments(self):
        from ptah.rest import Api, REST_ID
        self._init_ptah()

        services = config.get_cfg_storage(REST_ID)

        data = []
        def service(request, action, *args):
            data[:] = [action, args]

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {'service': 'test',
                             'subpath': ('action:test','1','2')}

        api = Api(request)
        api.render()

        self.assertEqual(data[0], "action")
        self.assertEqual(data[1], ('test', '1', '2'))
示例#8
0
    def test_rest_api_auth(self):
        from ptah.rest import Api, Login
        from ptah import authentication
        self._init_ptah()

        config.get_cfg_storage(
            authentication.AUTH_PROVIDER_ID)['test'] = Provider()

        request = DummyRequest(params = {'login': '******', 'password': '******'})

        login = Login(request)
        info = simplejson.loads(login.render())

        request = DummyRequest(environ = {'HTTP_X_AUTH_TOKEN': 'unknown'})
        request.matchdict = {'service': 'cms', 'subpath': ()}

        api = Api(request)
        api.render()
        self.assertEqual(ptah.authService.get_userid(), None)

        token = info['auth-token']

        request = DummyRequest(environ = {'HTTP_X_AUTH_TOKEN': token})
        request.matchdict = {'service': 'cms', 'subpath': ()}

        api = Api(request)
        api.render()
        self.assertEqual(ptah.authService.get_userid(), 'testprincipal:1')
示例#9
0
    def test_rest_response(self):
        from ptah.rest import Api, ID_REST
        self.init_ptah()

        services = config.get_cfg_storage(ID_REST)

        def service(request, action, *args):
            return HTTPNotFound()

        services['test'] = service

        request = DummyRequest(registry=self.config.registry)
        request.matchdict = {
            'service': 'test',
            'subpath': ('action:test', '1', '2')
        }
        res = Api(request)
        self.assertIsInstance(res, HTTPNotFound)
示例#10
0
    def test_rest_httpexception(self):
        from ptah.rest import Api, ID_REST
        self.init_ptah()

        services = config.get_cfg_storage(ID_REST)

        def service(request, action, *args):
            raise HTTPNotFound()

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {
            'service': 'test',
            'subpath': ('action:test', '1', '2')
        }

        res = json.loads(Api(request).text)
        self.assertEqual(res['message'], 'The resource could not be found.')
示例#11
0
    def test_rest_response_data(self):
        import datetime
        from ptah.rest import Api, ID_REST
        self.init_ptah()

        services = config.get_cfg_storage(ID_REST)

        def service(request, action, *args):
            return {'dt': datetime.datetime.now()}

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {
            'service': 'test',
            'subpath': ('action:test', '1', '2')
        }

        res = json.loads(Api(request).text)
        self.assertIn('dt', res)
示例#12
0
    def test_rest_arguments(self):
        from ptah.rest import Api, ID_REST
        self.init_ptah()

        services = config.get_cfg_storage(ID_REST)

        data = []

        def service(request, action, *args):
            data[:] = [action, args]

        services['test'] = service

        request = DummyRequest()
        request.matchdict = {
            'service': 'test',
            'subpath': ('action:test', '1', '2')
        }

        api = Api(request)

        self.assertEqual(data[0], "action")
        self.assertEqual(data[1], ('test', '1', '2'))