Exemple #1
0
    def test_path_item(self):
        """ make sure PathItem is correctly merged """
        a = self.app.resolve(utils.jp_compose('/a', '#/paths'))

        self.assertTrue(isinstance(a, objects.PathItem))
        self.assertTrue(a.get.operationId, 'a.get')
        self.assertTrue(a.put.description, 'c.put')
        self.assertTrue(a.post.description, 'd.post')

        b = self.app.resolve(utils.jp_compose('/b', '#/paths'))
        self.assertTrue(b.get.operationId, 'b.get')
        self.assertTrue(b.put.description, 'c.put')
        self.assertTrue(b.post.description, 'd.post')
Exemple #2
0
    def test_path_item(self):
        """ make sure PathItem is correctly merged """
        a = self.app.resolve(utils.jp_compose('/a', '#/paths'))

        self.assertTrue(isinstance(a, objects.PathItem))
        self.assertTrue(a.get.operationId, 'a.get')
        self.assertTrue(a.put.description, 'c.put')
        self.assertTrue(a.post.description, 'd.post')

        b = self.app.resolve(utils.jp_compose('/b', '#/paths'))
        self.assertTrue(b.get.operationId, 'b.get')
        self.assertTrue(b.put.description, 'c.put')
        self.assertTrue(b.post.description, 'd.post')
Exemple #3
0
    def s(self, p, b=_shortcut_[sc_path]):
        """ shortcut of App.resolve.
        We provide a default base for '#/paths'. ex. to access '#/paths/~1user/get',
        just call App.s('user/get')

        :param str p: path relative to base
        :param tuple b: a tuple (expected_prefix, base) to represent a 'base'
        """

        if b[0]:
            return self.resolve(utils.jp_compose(b[0] + p if not p.startswith(b[0]) else p, base=b[1]))
        else:
            return self.resolve(utils.jp_compose(p, base=b[1]))
Exemple #4
0
    def s(self, p, b=_shortcut_[sc_path]):
        """ shortcut of SwaggerApp.resolve.
        We provide a default base for '#/paths'. ex. to access '#/paths/~1user/get',
        just call SwaggerApp.s('user/get')

        :param str p: path relative to base
        :param tuple b: a tuple (expected_prefix, base) to represent a 'base'
        """

        if b[0]:
            return self.resolve(utils.jp_compose(b[0] + p if not p.startswith(b[0]) else p, base=b[1]))
        else:
            return self.resolve(utils.jp_compose(p, base=b[1]))
Exemple #5
0
    def test_integer_limit(self):
        """ header in integer """
        p2 = self.app.resolve(jp_compose(['#', 'paths', '/t', 'get', 'parameters', '1']))
        self.assertTrue(isinstance(p2, objects.Parameter))

        self.assertRaises(ValueError, p2._prim_, 101)
        self.assertRaises(ValueError, p2._prim_, -1)
Exemple #6
0
    def test_cascade_resolve(self):
        """
        """
        path = self.app.resolve(utils.jp_compose(['#', 'paths', '/pet']))

        _check(self, path.resolve('post'))
        _check(self, path.post)
Exemple #7
0
 def test_special_char(self):
     """ when the path has '{' and '}' """
     self.assertEqual(
         self.app.resolve(
             utils.jp_compose(['#', 'paths',
                               '/user/{username}'])).get.operationId,
         'getUserByName')
Exemple #8
0
    def test_cascade_resolve(self):
        """
        """
        path = self.app.resolve(utils.jp_compose(['#', 'paths', '/pet']))

        _check(self, path.resolve('post'))
        _check(self, path.post)
Exemple #9
0
    def test_integer_limit(self):
        """ header in integer """
        p2 = self.app.resolve(jp_compose(["#", "paths", "/t", "get", "parameters", "1"]))
        self.assertTrue(isinstance(p2, objects.Parameter))

        self.assertRaises(errs.ValidationError, p2._prim_, 101, self.app.prim_factory)
        self.assertRaises(errs.ValidationError, p2._prim_, -1, self.app.prim_factory)
Exemple #10
0
    def test_integer_limit(self):
        """ header in integer """
        p2 = self.app.resolve(jp_compose(['#', 'paths', '/t', 'get', 'parameters', '1']))
        self.assertTrue(isinstance(p2, objects.Parameter))

        self.assertRaises(errs.ValidationError, p2._prim_, 101, self.app.prim_factory)
        self.assertRaises(errs.ValidationError, p2._prim_, -1, self.app.prim_factory)
Exemple #11
0
    def test_simple_array(self):
        """ header in array """
        p1 = self.app.resolve(jp_compose(['#', 'paths', '/t', 'get', 'parameters', '0']))
        self.assertTrue(isinstance(p1, objects.Parameter))

        v = p1._prim_([1, 2, 3, 4, 5], self.app.prim_factory)
        self.assertTrue(isinstance(v, primitives.Array))
        self.assertEqual(str(v), '1,2,3,4,5')
Exemple #12
0
    def test_simple_array(self):
        """ header in array """
        p1 = self.app.resolve(jp_compose(['#', 'paths', '/t', 'get', 'parameters', '0']))
        self.assertTrue(isinstance(p1, objects.Parameter))

        v = p1._prim_([1, 2, 3, 4, 5], self.app.prim_factory)
        self.assertTrue(isinstance(v, primitives.Array))
        self.assertEqual(str(v), '1,2,3,4,5')
Exemple #13
0
    def test_simple_array(self):
        """ header in array """
        p1 = self.app.resolve(jp_compose(["#", "paths", "/t", "get", "parameters", "0"]))
        self.assertTrue(isinstance(p1, objects.Parameter))

        v = p1._prim_([1, 2, 3, 4, 5], self.app.prim_factory)
        self.assertTrue(isinstance(v, primitives.Array))
        self.assertEqual(str(v), "1,2,3,4,5")
Exemple #14
0
    def test_multi_level_array(self):
        """ header in array of array """
        p3 = self.app.resolve(jp_compose(["#", "paths", "/t", "get", "parameters", "2"]))
        self.assertTrue(isinstance(p3, objects.Parameter))

        self.assertEqual(
            str(p3._prim_([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]], [[11, 12], [13, 14]]], self.app.prim_factory)),
            "1|2,3|4,5|6 7|8,9|10 11|12,13|14",
        )
Exemple #15
0
    def test_multi_level_array(self):
        """ header in array of array """
        p3 = self.app.resolve(
            jp_compose(['#', 'paths', '/t', 'get', 'parameters', '2']))
        self.assertTrue(isinstance(p3, objects.Parameter))

        self.assertEqual(
            str(
                p3._prim_([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]],
                           [[11, 12], [13, 14]]], self.app.prim_factory)),
            '1|2,3|4,5|6 7|8,9|10 11|12,13|14')
Exemple #16
0
    def test_json_pointer(self):
        """ json pointer io function """
        self.assertEqual(utils.jp_compose('/test'), '~1test')
        self.assertEqual(utils.jp_compose('~test'), '~0test')
        self.assertEqual(utils.jp_compose('/~test'), '~1~0test')
        self.assertEqual(utils.jp_compose('a', 'b'), 'b/a')
        self.assertEqual(utils.jp_compose(''), '')
        self.assertEqual(utils.jp_compose(None, 'base'), 'base')

        cs = ['~test1', '/test2', 'test3']
        c = utils.jp_compose(cs, 'base')
        self.assertEqual(c, 'base/~0test1/~1test2/test3')
        self.assertEqual(utils.jp_split(c)[1:], cs)

        self.assertEqual(utils.jp_split('~1test'), ['/test'])
        self.assertEqual(utils.jp_split('~0test'), ['~test'])
        self.assertEqual(utils.jp_split('~1~0test'), ['/~test'])
        self.assertEqual(utils.jp_split(''), [])
        self.assertEqual(utils.jp_split(None), [])
        self.assertEqual(utils.jp_split('/~1~0test/qq/~0test/~1test/'), ['', '/~test', 'qq', '~test', '/test', ''])
Exemple #17
0
    def test_multi_level_array(self):
        """ header in array of array """
        p3 = self.app.resolve(jp_compose(['#', 'paths', '/t', 'get', 'parameters', '2']))
        self.assertTrue(isinstance(p3, objects.Parameter))

        self.assertEqual(str(p3._prim_(
            [
                [
                    [1,2],
                    [3,4],
                    [5,6]
                ],
                [
                    [7,8],
                    [9,10]
                ],
                [
                    [11,12],
                    [13,14]
                ]
            ]
        )), '1|2,3|4,5|6 7|8,9|10 11|12,13|14')
Exemple #18
0
    def test_json_pointer(self):
        """ json pointer io function """
        self.assertEqual(utils.jp_compose('/test'), '~1test')
        self.assertEqual(utils.jp_compose('~test'), '~0test')
        self.assertEqual(utils.jp_compose('/~test'), '~1~0test')
        self.assertEqual(utils.jp_compose('a', 'b'), 'b/a')
        self.assertEqual(utils.jp_compose(''), '')
        self.assertEqual(utils.jp_compose(None, 'base'), 'base')

        cs = ['~test1', '/test2', 'test3']
        c = utils.jp_compose(cs, 'base')
        self.assertEqual(c, 'base/~0test1/~1test2/test3')
        self.assertEqual(utils.jp_split(c)[1:], cs)

        self.assertEqual(utils.jp_split('~1test'), ['/test'])
        self.assertEqual(utils.jp_split('~0test'), ['~test'])
        self.assertEqual(utils.jp_split('~1~0test'), ['/~test'])
        self.assertEqual(utils.jp_split(''), [])
        self.assertEqual(utils.jp_split(None), [])
        self.assertEqual(utils.jp_split('/~1~0test/qq/~0test/~1test/'), ['', '/~test', 'qq', '~test', '/test', ''])
from pyswagger import SwaggerApp, SwaggerSecurity
from pyswagger.contrib.client.requests import Client
from pyswagger.utils import jp_compose

# load Swagger resource file into SwaggerApp object
app = SwaggerApp._create_('http://petstore.swagger.io/v2/swagger.json')

auth = SwaggerSecurity(app)
auth.update_with('api_key', '12312312312312312313q')  # api key
auth.update_with('petstore_auth', '12334546556521123fsfss')  # oauth2

# init swagger client
client = Client(auth)

# a dict is enough for representing a Model in Swagger
pet_Tom = dict(id=1, name='Tom', photoUrls=['http://test'])
# a request to create a new pet
client.request(app.op['addPet'](body=pet_Tom))

# - access an Operation object via SwaggerApp.op when operationId is defined
# - a request to get the pet back
pet = client.request(app.op['getPetById'](petId=1)).data
assert pet.id == 1
assert pet.name == 'Tom'

# new ways to get Operation object corresponding to 'getPetById'.
# 'jp_compose' stands for JSON-Pointer composition
pet = client.request(
    app.resolve(jp_compose('/pet/{petId}', base='#/paths')).get(petId=1)).data
assert pet.id == 1
Exemple #20
0
 def test_resolve(self):
     """
     """
     _check(
         self,
         self.app.resolve(utils.jp_compose(['#', 'paths', '/pet', 'post'])))
Exemple #21
0
 def test_resolve(self):
     """
     """
     _check(self, self.app.resolve(utils.jp_compose(['#', 'paths', '/pet', 'post'])))
Exemple #22
0
 def test_special_char(self):
     """ when the path has '{' and '}' """
     self.assertEqual(
             self.app.resolve(utils.jp_compose(['#', 'paths', '/user/{username}'])).get.operationId,
             'getUserByName'
     )
Exemple #23
0
from pyswagger import SwaggerApp, SwaggerSecurity
from pyswagger.contrib.client.requests import Client
from pyswagger.utils import jp_compose

# load Swagger resource file into SwaggerApp object
app = SwaggerApp._create_('http://petstore.swagger.io/v2/swagger.json')

auth = SwaggerSecurity(app)
auth.update_with('api_key', '12312312312312312313q') # api key
auth.update_with('petstore_auth', '12334546556521123fsfss') # oauth2

# init swagger client
client = Client(auth)

# a dict is enough for representing a Model in Swagger
pet_Tom=dict(id=1, name='Tom', photoUrls=['http://test'])
# a request to create a new pet
client.request(app.op['addPet'](body=pet_Tom))

# - access an Operation object via SwaggerApp.op when operationId is defined
# - a request to get the pet back
pet = client.request(app.op['getPetById'](petId=1)).data
assert pet.id == 1
assert pet.name == 'Tom'

# new ways to get Operation object corresponding to 'getPetById'.
# 'jp_compose' stands for JSON-Pointer composition
pet = client.request(app.resolve(jp_compose('/pet/{petId}', base='#/paths')).get(petId=1)).data
assert pet.id == 1