Beispiel #1
0
class GetLinkTestCase(TestCase):

    def setUp(self):
        self.url = '/'
        self.session = Session()
        self.schema = Schema(
            self.url, raw_schema=deepcopy(SCHEMA), session=self.session)

    def test_returns_link_by_rel(self):
        link = self.schema.get_link('create')
        self.assertEqual(link, SCHEMA['links'][0])

    def test_returns_none_for_missing_link(self):
        link = self.schema.get_link('missing')
        self.assertIs(link, None)
Beispiel #2
0
class GetLinkTestCase(TestCase):
    def setUp(self):
        self.url = '/'
        self.session = Session()
        self.schema = Schema(self.url,
                             raw_schema=deepcopy(SCHEMA),
                             session=self.session)

    def test_returns_link_by_rel(self):
        link = self.schema.get_link('create')
        self.assertEqual(link, SCHEMA['links'][0])

    def test_returns_none_for_missing_link(self):
        link = self.schema.get_link('missing')
        self.assertIs(link, None)
Beispiel #3
0
    def setUp(self):
        raw_schema = {
            'links': [
                {
                    'rel': 'item',
                    'href': '/root/{id}',
                },
                {
                    'rel': 'related',
                    'href': '/root/{slug}/{related}',
                },
                {
                    'rel': 'create',
                    'href': '/root',
                    'method': 'post',
                },
                {
                    'rel': 'list',
                    'href': '/root',
                }
            ]
        }
        data = {'id': '123', 'slug': 'slug'}

        self.session = Session()
        self.schema = Schema('/schema', raw_schema, session=self.session)
        self.resource = Resource.from_data(
            'http://much.url.com/',
            data=data, schema=self.schema, session=self.session
        )

        self.request_patcher = patch.object(self.session, 'request')
        self.request = self.request_patcher.start()
Beispiel #4
0
    def setUp(self):
        self.session = Session()

        self.url = 'http://app.com/myschema'
        self.schema = Schema(self.url,
                             raw_schema=deepcopy(SCHEMA),
                             session=self.session)
Beispiel #5
0
 def test_add_unit(self, put, get):
     resource_data = {
         "name": "app1",
         "units": [
             {
                 "Ip": "10.10.10.10"
             },
             {
                 "Ip": "9.9.9.9"
             },
         ],
     }
     schema = Schema("",
                     type="object",
                     properties={"units": {
                         "type": "array",
                         "items": {},
                     }})
     resource = Resource(url="url.com", data=resource_data, schema=schema)
     get.return_value = resource
     data = {"units": '10'}
     request = RequestFactory().post("/", data)
     request.session = {"tsuru_token": "admin"}
     ChangeUnit.as_view()(request, app_name="app_name")
     put.assert_called_with('{0}/apps/app_name/units'.format(
         settings.TSURU_HOST),
                            data='8',
                            headers={'authorization': 'admin'})
Beispiel #6
0
    def setUp(self):
        super(ParseResourceTestCase, self).setUp()

        self.item_schema = {
            'type':
            'object',
            'properties': {
                'id': {
                    'type': 'integer'
                }
            },
            'links': [{
                "href": "http://localhost/foos/{id}/",
                "method": "GET",
                "rel": "item",
            }]
        }

        self.raw_schema = {
            'title': "title",
            'type': "object",
            'properties': {
                u'objects': {
                    u'type': u'array',
                    u'items': self.item_schema,
                },
                u'values': {
                    u'type': u'array'
                }
            }
        }
        self.schema = Schema(href="url.com",
                             raw_schema=self.raw_schema,
                             session=self.session)
Beispiel #7
0
 def test_redirect_to_the_app_detail_page(self, get):
     resource_data = {
         "name": "app1",
         "units": [
             {
                 "Ip": "10.10.10.10"
             },
             {
                 "Ip": "9.9.9.9"
             },
         ],
     }
     schema = Schema("",
                     type="object",
                     properties={"units": {
                         "type": "array",
                         "items": {},
                     }})
     resource = Resource(url="url.com", data=resource_data, schema=schema)
     get.return_value = resource
     data = {"units": '2'}
     request = RequestFactory().post("/", data)
     request.session = {"tsuru_token": "admin"}
     response = ChangeUnit.as_view()(request, app_name="app_name")
     self.assertEqual(302, response.status_code)
     self.assertEqual("/apps/app_name/", response.items()[1][1])
Beispiel #8
0
    def setUp(self):
        super(FromResponseTestCase, self).setUp()

        self._response = Mock()
        self._response.url = 'http://example.com'

        content_type = 'application/json; profile=http://example.com/schema'
        self._response.headers = {'content-type': content_type}
        self.schema = Schema('/', raw_schema={}, session=self.session)
Beispiel #9
0
 def test_uses_original_ref_on_representation(self):
     raw_schema = {
         'properties': {
             'inner': {
                 '$ref': '/schema'
             },
         }
     }
     session = Session()
     schema = Schema('/schema', raw_schema=raw_schema, session=session)
     self.assertEqual(repr(schema), repr(raw_schema))
Beispiel #10
0
    def setUp(self):
        raw_schema = {
            'links': [
                {
                    'rel': 'item',
                    'href': '/root/{id}',
                },
                {
                    'rel': 'related',
                    'href': '/root/{slug}/{related}',
                },
                {
                    'rel': 'create',
                    'href': '/root',
                    'method': 'POST',
                },
                {
                    'rel': 'list',
                    'href': '/root',
                }
            ]
        }
        self.data = {'id': '123',
                     'slug': 'slug',
                     'items': [{"ide": 1},
                               {"ida": 2}]}

        self.session = Session()
        self.schema = Schema('/schema', raw_schema, session=self.session)

        self.response = Mock()
        self.response.url = 'http://example.com'

        self.profile_url = 'http://example.com/schema'

        content_type = 'application/json; profile=%s' % (self.profile_url)
        self.response.headers = {
            'content-type': content_type
        }

        self.resource = Resource.from_data(
            'http://much.url.com/',
            data=deepcopy(self.data), schema=self.schema, session=self.session
        )

        self.resource2 = Resource.from_data(
            'http://much.url.com/',
            data=deepcopy(self.data), schema=self.schema,
            session=self.session, response=self.response
        )

        self.request_patcher = patch.object(self.session, 'request')
        self.request = self.request_patcher.start()
Beispiel #11
0
 def setUp(self, get, requests_mock):
     request = RequestFactory().get("/")
     request.session = {"tsuru_token": "admin"}
     self.expected = {
         "name": "app1",
         "framework": "php",
         "repository": "[email protected]:php.git",
         "state": "dead",
         "units": [
             {"Ip": "10.10.10.10"},
             {"Ip": "9.9.9.9"}
         ],
         "teams": ["tsuruteam", "crane"]
     }
     schema = Schema(
         "",
         type="object",
         properties={
             "units":
             {
                 "type": "array",
                 "items": {},
             },
             "teams":
             {
                 "type": "array",
                 "items": {},
             }
         }
     )
     resource = Resource(
         url="url.com",
         data=self.expected,
         schema=schema
     )
     get.return_value = resource
     json_mock = mock.Mock()
     json_mock.json.return_value = self.expected
     requests_mock.return_value = json_mock
     service_list_mock = mock.Mock()
     service_list_mock.return_value = [{"service": "mongodb",
                                        "instances": ["mymongo"]}]
     service_info_mock = mock.Mock()
     service_info_mock.return_value = {"Name": "mymongo",
                                       "ServiceName": "mongodb",
                                       "Apps": ["app1"]}
     self.old_service_list = AppDetail.service_list
     AppDetail.service_list = service_list_mock
     self.old_service_info = AppDetail.service_info
     AppDetail.service_info = service_info_mock
     self.response = AppDetail.as_view()(request, app_name="app1")
     self.request = request
Beispiel #12
0
 def test_resource_with_an_array_without_schema(self):
     data = {
         u'units': [{
             u'name': u'someunit'
         }],
         u'name': u'registry',
     }
     s = Schema(href='url',
                raw_schema={
                    'title': 'app schema',
                    'type': 'object',
                    'required': ['name'],
                    'properties': {
                        'name': {
                            'type': 'string'
                        }
                    }
                },
                session=self.session)
     response = self.resource_from_data("url", data, s)
     self.assertDictEqual(data, response.data)
Beispiel #13
0
 def parse_data(self):
     if isinstance(self.data, dict):
         for key, value in self.data.items():
             if isinstance(value, list):
                 data_items = []
                 for item in value:
                     try:
                         prop_items = self.schema.properties[key]['items']
                     except KeyError:
                         break
                     if "$ref" in prop_items:
                         s = schema.get(prop_items['$ref'], self.auth)
                     else:
                         s = Schema(self.url, **prop_items)
                     data_items.append(
                         Resource(
                             self.url,
                             data=item,
                             schema=s,
                         ))
                 self.data[key] = data_items
Beispiel #14
0
    def setUp(self):
        super(ResourceTestCase, self).setUp()

        self.data = {
            "name": "repos",
            "platform": "js",
        }
        self.raw_schema = {
            'type':
            "object",
            'required': ["platform"],
            'title':
            "some title",
            'properties': {
                u'name': {
                    u'type': u'string'
                },
                u'platform': {
                    u'type': u'string'
                }
            },
            'links': [{
                "href": "/apps/{name}/log",
                "method": "GET",
                "rel": "log"
            }, {
                "href": "/apps/{name}/env",
                "method": "GET",
                "rel": "env"
            }]
        }
        self.schema = Schema(href="url.com",
                             raw_schema=self.raw_schema,
                             session=self.session)

        self.url = "http://app.com/content"

        self.result = self.resource_from_data(url=self.url,
                                              data=self.data,
                                              schema=self.schema)
Beispiel #15
0
 def create_schema(self, href):
     schema = deepcopy(SCHEMA)
     return Schema(href, raw_schema=schema, session=self.session)
Beispiel #16
0
 def schema(self, url, **kwargs):
     data = self.request(url, **kwargs).json()
     return Schema(url, raw_schema=data, session=self)
Beispiel #17
0
 def item_schema(self, key):
     href = '#/{0}'.format(self.SCHEMA_PREFIX)
     return Schema(href, raw_schema=self.schema, session=self.session)
Beispiel #18
0
 def setUp(self):
     self.url = '/'
     self.session = Session()
     self.schema = Schema(
         self.url, raw_schema=deepcopy(SCHEMA), session=self.session)
Beispiel #19
0
 def create_schema(self, url, session=None):
     if session is None:
         session = self.session
     return Schema(self.SCHEMA_URL, raw_schema={}, session=session)
Beispiel #20
0
 def setUp(self):
     self.url = '/'
     self.session = Session()
     self.schema = Schema(self.url,
                          raw_schema=deepcopy(SCHEMA),
                          session=self.session)