示例#1
0
 def test_closed(self):
     d = Dict(required_fields={'foo': Int()},
              optional_fields={'bar': Int()},
              closed=True)
     d.check("name", {'foo': 1})
     d.check("name", {'foo': 1, 'bar': 2})
     self.assertRaises(RpcCheckError, d.check, "name", {
         'foo': 1,
         'bar': 2,
         'extra': 3
     })
示例#2
0
 def test_fallback_to_item_type(self):
     d = Dict(required_fields={'foo': Int()},
              optional_fields={'bar': Int()},
              item_type=Unicode())
     d.check("name", {'foo': 1})
     d.check("name", {'foo': 1, 'bar': 2})
     d.check("name", {'foo': 1, 'bar': 2, 'extra': u'foo'})
     self.assertRaises(RpcCheckError, d.check, "name", {
         'foo': 1,
         'bar': 2,
         'extra': 3
     })
示例#3
0
 def test_check_params(self):
     s = Signature(lambda slf, x, y: x, x=Int(), y=Unicode())
     s.check_params([None, 1, u"a"], {})
     self.assertRaises(RpcCheckError, s.check_params, [None, u"a", u"a"],
                       {})
     self.assertRaises(RpcCheckError, s.check_params, [None, 1, 2], {})
     self.assertRaises(RpcCheckError, s.check_params, [None, 1, u"a", 3],
                       {})
示例#4
0
class DummyApi(object):
    def __init__(self, result=None):
        self.result = result

    @signature(a=Unicode(), b=Int())
    def test(self, a, b):
        """Basic doc."""
        return self.result
示例#5
0
 def test_optional_fields(self):
     d = Dict(optional_fields={'foo': Int(null=True), 'bar': Unicode()})
     d.check("name", {'foo': None, 'bar': u'b'})
     d.check("name", {'foo': 1, 'bar': u'b'})
     d.check("name", {'foo': 1, 'bar': u'b', 'extra': 2})
     d.check("name", {"foo": 1})
     d.check("name", {"bar": u"b"})
     self.assertRaises(RpcCheckError, d.check, "name", {"foo": u'b'})
示例#6
0
 def test_check(self):
     i = Int()
     i.check("name", 1)
     self.assertRaises(RpcCheckError, i.check, "name", "foo")
示例#7
0
 def test_jsonrpc_signature(self):
     s = Signature(lambda slf, x: unicode(x),
                   x=Int("foo"),
                   returns=Unicode("bar"))
     self.assertEqual(s.jsonrpc_signature(), [['string', 'int']])
示例#8
0
 def test_param_doc(self):
     s = Signature(lambda slf, x: x, x=Int("foo"), returns=Int("bar"))
     self.assertEqual(
         s.param_doc(),
         [':param Int x:', '    foo', ':rtype Int:', '    bar'])
示例#9
0
 def test_check_result(self):
     s = Signature(lambda slf, x: x, x=Int("foo"), returns=Int("bar"))
     self.assertEqual(s.check_result(5), 5)
     self.assertRaises(RpcCheckError, s.check_result, 'a')
示例#10
0
 def test_check_params_with_defaults(self):
     s = Signature(lambda slf, x, y=u"default": x, x=Int(), y=Unicode())
     s.check_params([None, 1, u"a"], {})
     s.check_params([None, 1], {})
示例#11
0
 def test_item_type(self):
     d = Dict(item_type=Int())
     d.check("name", {})
     d.check("name", {"a": 1, "b": 2})
     self.assertRaises(RpcCheckError, d.check, "name", {"a": 1, "b": "c"})
示例#12
0
 def test_item_type(self):
     l = List(item_type=Int())
     l.check("name", [])
     l.check("name", [1, 2, 3])
     self.assertRaises(RpcCheckError, l.check, "name", [1, 0.1])
示例#13
0
 def test_check(self):
     i = Int()
     i.check("name", 1)
     self.assertRaises(RpcCheckError, i.check, "name", "foo")
示例#14
0
                      x=Int("foo"),
                      returns=Unicode("bar"))
        self.assertEqual(s.jsonrpc_signature(), [['string', 'int']])


class DummyApi(object):
    def __init__(self, result=None):
        self.result = result

    @signature(a=Unicode(), b=Int())
    def test(self, a, b):
        """Basic doc."""
        return self.result


@signature(a=Unicode(), b=Int(), returns=Unicode(), requires_self=False)
def dummy_function(a, b):
    return unicode(a * b)


class TestSignatureDecorate(VumiTestCase):
    def test_decorate_unbound_method(self):
        api = DummyApi()
        self.assertEqual(api.test.signature, [['null', 'string', 'int']])
        self.assertTrue(isinstance(api.test.signature_object, Signature))
        self.assertEqual(api.test.__name__, 'test')
        self.assertEqual(api.test.__module__, 'vumi.tests.test_rpc')
        self.assertEqual(
            api.test.__doc__,
            'Basic doc.\n\n:param Unicode a:\n:param Int b:\n:rtype Null:')