Beispiel #1
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 #2
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 #3
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 #4
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 #5
0
 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
Beispiel #6
0
    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
        )
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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
        )
Beispiel #10
0
    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)
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 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()
Beispiel #13
0
    def resource_from_response(self, response, schema):
        resource = Resource.from_response(
            response, session=self.session, schema=schema)

        return resource
Beispiel #14
0
 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
Beispiel #15
0
 def test_blocks_init_of_base_class(self):
     with self.assertRaises(NotImplementedError):
         Resource()
Beispiel #16
0
    def resource_from_response(self, response, schema):
        resource = Resource.from_response(response,
                                          session=self.session,
                                          schema=schema)

        return resource