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()
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])
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'})
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()
def resource_from_data(self, url, data=None, schema=None, response=None): resource = Resource.from_data(url=url, data=data, schema=schema, session=self.session, response=response) return resource
def test_extra_parameters_uri(self, get, resource_from_response): data = { u'name': u'repos', u'platform': u'repos', } self.schema.links[0]['href'] = '/apps/{name}/log/{lines}' app = Resource(url="appurl.com", data=data, schema=self.schema) app.log(lines=10, source="app") url = '/apps/repos/log/10?source=app' get.assert_called_with( url=url, headers={'content-type': 'application/json'}, timeout=30 )
def resource(self, url, **kwargs): response = self.request(url, **kwargs) schema = None schema_url = get_profile_from_header(response.headers) if schema_url is not None: schema = LazySchema(href=schema_url, session=self) return Resource.from_response( response=response, session=self, schema=schema)
def resource(self, url, **kwargs): response = self.request(url, **kwargs) schema = None schema_url = get_profile_from_header(response.headers) if schema_url is not None: schema = LazySchema(href=schema_url, session=self) return Resource.from_response(response=response, session=self, schema=schema)
def test_extra_parameters_uri_name_bug(self, get, resource_from_response): # regression for #12. data = {'platform': 'xpto'} link = { "href": "http://example.org/{context_name}", "method": "GET", "rel": "example" } self.schema.links.append(link) app = Resource(url="appurl.com", data=data, schema=self.schema) app.example(context_name='context', name='value1') url = 'http://example.org/context?name=value1' get.assert_called_with( url=url, headers={'content-type': 'application/json'}, timeout=30 )
def test_extra_parameters_querystring(self, get, resource_from_response): data = { u'name': u'repos', u'platform': u'repos', } app = Resource(url="appurl.com", data=data, schema=self.schema) app.log(lines=10) url = '/apps/repos/log?lines=10' get.assert_called_with( url=url, headers={'content-type': 'application/json'}, timeout=30 ) app.log(lines=10, source="app") qs = parse_qs(urlparse(get.call_args[1]['url']).query) expected = {'source': ['app'], 'lines': ['10']} self.assertEqual(qs, expected)
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
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.resource = Resource.from_data( 'http://much.url.com/', data=deepcopy(self.data), schema=self.schema, session=self.session ) self.request_patcher = patch.object(self.session, 'request') self.request = self.request_patcher.start()
def resource_from_response(self, response, schema): resource = Resource.from_response( response, session=self.session, schema=schema) return resource
def resource_from_data(self, url, data=None, schema=None, response=None): resource = Resource.from_data( url=url, data=data, schema=schema, session=self.session, response=response) return resource
def test_blocks_init_of_base_class(self): with self.assertRaises(NotImplementedError): Resource()
def resource_from_response(self, response, schema): resource = Resource.from_response(response, session=self.session, schema=schema) return resource