Esempio n. 1
0
    def test_extra_keyword_args(self):
        def test(a, b, **kwargs):
            pass

        kwargs, xtra = getcallargs(test, a=5, b=6, c=7, d=8)
        self.assertTrue(kwargs == {'a': 5, 'b': 6, 'c': 7, 'd': 8})
        self.assertTrue(xtra == [])
Esempio n. 2
0
    def test_default(self):
        def test(a, b, default=None):
            pass

        kwargs, xtra = getcallargs(test, a=5, b=6)
        self.assertTrue(kwargs == {'a': 5, 'b': 6, 'default': None})
        self.assertTrue(xtra == [])
Esempio n. 3
0
    def test_no_args(self):
        def test():
            pass

        kwargs, xtra = getcallargs(test)
        self.assertTrue(kwargs == {})
        self.assertTrue(xtra == [])
Esempio n. 4
0
    def test_extra_positional_args(self):
        def test(a, b, *args):
            pass

        kwargs, xtra = getcallargs(test, 5, 6, 7, 8)
        self.assertTrue(kwargs == {'a': 5, 'b': 6})
        self.assertTrue(xtra == [7, 8])
Esempio n. 5
0
    def dispatch(self, method_name, params):
        """
        This method walks the attribute tree in the method 
        and passes the parameters, either in positional or
        keyword form, into the appropriate method on the
        Handler class. Currently supports only positional
        or keyword arguments, not mixed. 
        """
        if method_name in dir(RequestHandler):
            # Pre-existing, not an implemented attribute
            return self.handler.result(self.faults.method_not_found())
        method = self.handler
        method_list = dir(method)
        method_list.sort()
        attr_tree = method_name.split('.')
        try:
            for attr_name in attr_tree:
                method = self.check_method(attr_name, method)
        except AttributeError:
            return self.handler.result(self.faults.method_not_found())
        if not callable(method):
            # Not callable, so not a method
            return self.handler.result(self.faults.method_not_found())
        if method_name.startswith('_') or \
                ('private' in dir(method) and method.private is True):
            # No, no. That's private.
            return self.handler.result(self.faults.method_not_found())
        args = []
        kwargs = {}
        if type(params) is types.DictType:
            # The parameters are keyword-based
            kwargs = params
        elif type(params) in (list, tuple):
            # The parameters are positional
            args = params
        else:
            # Bad argument formatting?
            return self.handler.result(self.faults.invalid_params())
        # Validating call arguments
        try:
            final_kwargs, extra_args = getcallargs(method, *args, **kwargs)
        except TypeError:
            return self.handler.result(self.faults.invalid_params())
        try:
            response = method(*extra_args, **final_kwargs)
        except Exception:
            self.traceback(method_name, params)
            return self.handler.result(self.faults.internal_error())

        if 'async' in dir(method) and method. async:
            # Asynchronous response -- the method should have called
            # self.result(RESULT_VALUE)
            if response != None:
                # This should be deprecated to use self.result
                message = "Async results should use 'self.result()'"
                message += " Return result will be ignored."
                logging.warning(message)
        else:
            # Synchronous result -- we call result manually.
            return self.handler.result(response)
Esempio n. 6
0
    def test_positional_args(self):
        def test(a, b):
            pass

        kwargs, xtra = getcallargs(test, 5, 6)
        self.assertTrue(kwargs == {'a': 5, 'b': 6})
        self.assertTrue(xtra == [])
Esempio n. 7
0
    def test_keyword_args(self):
        def test(a, b):
            pass

        kwargs, xtra = getcallargs(test, a=5, b=6)
        self.assertTrue(kwargs == {'a': 5, 'b': 6})
        self.assertTrue(xtra == [])
Esempio n. 8
0
    def test_default(self):
        def test(a, b, default=None):
            pass

        kwargs, xtra = getcallargs(test, a=5, b=6)
        self.assertEqual(kwargs, {'a': 5, 'b': 6, 'default': None})
        self.assertEqual(xtra, [])
Esempio n. 9
0
    def test_keyword_args(self):
        def test(a, b):
            pass

        kwargs, xtra = getcallargs(test, a=5, b=6)
        self.assertEqual(kwargs, {'a': 5, 'b': 6})
        self.assertEqual(xtra, [])
Esempio n. 10
0
    def test_extra_positional_args(self):
        def test(a, b, *args):
            pass

        kwargs, xtra = getcallargs(test, 5, 6, 7, 8)
        self.assertEqual(kwargs, {'a': 5, 'b': 6})
        self.assertEqual(xtra, [7, 8])
Esempio n. 11
0
    def test_positional_args(self):
        def test(a, b):
            pass

        kwargs, xtra = getcallargs(test, 5, 6)
        self.assertEqual(kwargs, {'a': 5, 'b': 6})
        self.assertEqual(xtra, [])
Esempio n. 12
0
    def test_no_args(self):
        def test():
            pass

        kwargs, xtra = getcallargs(test)
        self.assertEqual(kwargs, {})
        self.assertEqual(xtra, [])
Esempio n. 13
0
 def test_method(self):
     class Foo(object):
         def test(myself, a, b):
             pass
     foo = Foo()
     kwargs, xtra = getcallargs(foo.test, 5, 6)
     self.assertEqual(kwargs, {'a': 5, 'b': 6})
     self.assertEqual(xtra, [])
Esempio n. 14
0
 def test_extra_positional_args(self):
     def test(a, b, *args):
         pass
     kwargs, xtra = getcallargs(test, 5, 6, 7, 8)
     self.assertTrue(kwargs == {'a': 5, 'b': 6})
     self.assertTrue(xtra == [7, 8])
Esempio n. 15
0
 def test_no_args(self):
     def test():
         pass
     kwargs, xtra = getcallargs(test)
     self.assertEqual(kwargs, {})
     self.assertEqual(xtra, [])
Esempio n. 16
0
 def test_default(self):
     def test(a, b, default=None):
         pass
     kwargs, xtra = getcallargs(test, a=5, b=6)
     self.assertEqual(kwargs, {'a': 5, 'b': 6, 'default': None})
     self.assertEqual(xtra, [])
Esempio n. 17
0
 def test_extra_keyword_args(self):
     def test(a, b, **kwargs):
         pass
     kwargs, xtra = getcallargs(test, a=5, b=6, c=7, d=8)
     self.assertEqual(kwargs, {'a': 5, 'b': 6, 'c': 7, 'd': 8})
     self.assertEqual(xtra, [])
Esempio n. 18
0
 def test_no_args(self):
     def test():
         pass
     kwargs, xtra = getcallargs(test)
     self.assertTrue(kwargs == {})
     self.assertTrue(xtra == [])
Esempio n. 19
0
 def test_positional_args(self):
     def test(a, b):
         pass
     kwargs, xtra = getcallargs(test, 5, 6)
     self.assertEqual(kwargs, {'a': 5, 'b': 6})
     self.assertEqual(xtra, [])
Esempio n. 20
0
 def test_default(self):
     def test(a, b, default=None):
         pass
     kwargs, xtra = getcallargs(test, a=5, b=6)
     self.assertTrue(kwargs == {'a':5, 'b':6, 'default':None})
     self.assertTrue(xtra == [])
Esempio n. 21
0
 def test_extra_positional_args(self):
     def test(a, b, *args):
         pass
     kwargs, xtra = getcallargs(test, 5, 6, 7, 8)
     self.assertEqual(kwargs, {'a': 5, 'b': 6})
     self.assertEqual(xtra, [7, 8])
Esempio n. 22
0
 def test_keyword_args(self):
     def test(a, b):
         pass
     kwargs, xtra = getcallargs(test, a=5, b=6)
     self.assertTrue(kwargs == {'a': 5, 'b':6})
     self.assertTrue(xtra == [])
Esempio n. 23
0
 def test_keyword_args(self):
     def test(a, b):
         pass
     kwargs, xtra = getcallargs(test, a=5, b=6)
     self.assertEqual(kwargs, {'a': 5, 'b': 6})
     self.assertEqual(xtra, [])
Esempio n. 24
0
 def test_positional_args(self):
     def test(a, b):
         pass
     kwargs, xtra = getcallargs(test, 5, 6)
     self.assertTrue(kwargs == {'a':5, 'b': 6})
     self.assertTrue(xtra == [])