Exemplo n.º 1
0
    def setUp(self):

        self.cosmos1 = Cosmos()
        with self.cosmos1:

            self.places = places = API('places')

            @places.model
            class City(BaseModel):
                properties = [
                    optional(u"name", String)
                ]

            @places.model
            class Address(BaseModel):
                properties = [
                    required(u"number", Integer),
                    required(u"street", String),
                ]
                links = [
                    required(u"city", City)
                ]

        self.cosmos2 = Cosmos()
        with self.cosmos2:
            with patch.object(requests, 'get') as mock_get:
                mock_get.return_value.json = lambda: API.to_json(places)
                mock_get.return_value.status_code = 200
                self.remote_places = API.load('http://example.com/spec.json')
                self.remote_places.client_hook = WerkzeugTestClientHook(places.get_flask_app().test_client())
Exemplo n.º 2
0
    def setUp(self):

        self.cosmos1 = Cosmos()
        with self.cosmos1:

            self.mathy = mathy = API("mathy")

            @mathy.action(accepts=Array(Integer), returns=Integer)
            def add(numbers):
                return sum(numbers)

            @mathy.action(accepts=Struct([
                required(u'numerator', Integer),
                required(u'denominator', Integer),
            ]), returns=Integer)
            def divide(numerator, denominator):
                return numerator / denominator


            self.add = add

        self.cosmos2 = Cosmos()
        with self.cosmos2:
            with patch.object(requests, 'get') as mock_get:
                mock_get.return_value.json = lambda: API.to_json(mathy)
                mock_get.return_value.status_code = 200
                self.remote_mathy = API.load('http://example.com/spec.json')
                self.remote_mathy.client_hook = WerkzeugTestClientHook(mathy.get_flask_app().test_client())
Exemplo n.º 3
0
 def test_to_json(self):
     places = self.places
     with self.cosmos:
         self.assertEqual(API.to_json(places), {
             u'name': u'places',
             u'actions': { u'map': {}, u'order': [] },
             u"models": {
                 u"map": {
                     u"Address": {
                         u"data_schema": {
                             u'type': u"Struct",
                             u"param": {
                                 u"map": {
                                     u"number": {
                                         u"required": True,
                                         u"schema": {u"type": u"Integer"}
                                     },
                                     u"street": {
                                         u"required": True,
                                         u"schema": {u"type": u"String"}
                                     },
                                     u"city": {
                                         u"required": False,
                                         u"schema": {u"type": u"String"}
                                     }
                                 },
                                 u"order": [u"number", u"street", u"city"]
                             }
                         },
                         u"links": { u"map": {}, u"order": [] },
                         u"query_fields": { u"map": {}, u"order": [] }
                     }
                 },
                 u"order": [u"Address"]
             }
         })
Exemplo n.º 4
0
    def setUp(self):

        self.cosmos = Cosmos()
        with self.cosmos:

            self.places = places = API('places')

            @places.model
            class City(BaseModel):
                properties = [
                    optional(u"name", String)
                ]

                @classmethod
                def validate(cls, datum):
                    if datum[u"name"][0].islower():
                        raise ValidationError("Name must be capitalized", datum["name"])

                def save(self):
                    if self.id is None:
                        # Create new id
                        self.id = str(len(cities))
                    cities[self.id] = self

        self.cosmos2 = Cosmos()
        with self.cosmos2:
            with patch.object(requests, 'get') as mock_get:
                mock_get.return_value.json = lambda: API.to_json(places)
                mock_get.return_value.status_code = 200
                self.remote_places = API.load('http://example.com/spec.json')
                self.remote_places.client_hook = WerkzeugTestClientHook(places.get_flask_app().test_client())

        cities = {
            "0": City(name="Toronto", id="0"),
            "1": City(name="San Francisco", id="1"),
        }
Exemplo n.º 5
0
 def test_schema(self):
     API.from_json(API.to_json(self.cookbook))
Exemplo n.º 6
0
 def test_serialize(self):
     self.assertEqual(API.to_json(self.cookbook), cookbook_spec)