예제 #1
0
 def test_create_root_volume_bdm_v2(self):
     body = dict(server=dict(
             name='test_server', imageRef=IMAGE_UUID,
             flavorRef=2, min_count=1, max_count=1,
             block_device_mapping_v2=[dict(
                     source_type='volume',
                     uuid='1',
                     device_name='/dev/vda',
                     boot_index=0,
                     delete_on_termination=False,
                     )]
             ))
     req = fakes.HTTPRequest.blank('/v2/fake/os-volumes_boot')
     req.method = 'POST'
     req.body = jsonutils.dumps(body)
     req.headers['content-type'] = 'application/json'
     res = req.get_response(fakes.wsgi_app(
         init_only=('os-volumes_boot', 'servers')))
     self.assertEqual(res.status_int, 202)
     server = jsonutils.loads(res.body)['server']
     self.assertEqual(FAKE_UUID, server['id'])
     self.assertEqual(CONF.password_length, len(server['adminPass']))
     self.assertEqual(len(self._block_device_mapping_seen), 1)
     self.assertFalse(self._legacy_bdm_seen)
     self.assertEqual(self._block_device_mapping_seen[0]['volume_id'], '1')
     self.assertEqual(self._block_device_mapping_seen[0]['boot_index'],
                      0)
     self.assertEqual(self._block_device_mapping_seen[0]['device_name'],
             '/dev/vda')
예제 #2
0
 def test_get_version_list_302(self):
     req = webob.Request.blank('/v2')
     req.accept = "application/json"
     res = req.get_response(fakes.wsgi_app())
     self.assertEqual(res.status_int, 302)
     redirect_req = webob.Request.blank('/v2/')
     self.assertEqual(res.location, redirect_req.url)
 def _make_request(self, url):
     req = webob.Request.blank(url)
     req.headers['Accept'] = self.content_type
     res = req.get_response(
         fakes.wsgi_app(init_only=('os-virtual-interfaces',
                                   'OS-EXT-VIF-NET')))
     return res
예제 #4
0
 def test_create_instance_with_network_no_fixed_ip(self):
     body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]])
     del body_dict["server"]["networks"][0]["fixed_ip"]
     request = self._get_create_request_json(body_dict)
     response = request.get_response(fakes.wsgi_app(init_only=("servers", "os-create-server-ext")))
     self.assertEqual(response.status_int, 202)
     self.assertEqual([("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", None)], self.networks.as_tuples())
예제 #5
0
 def test_create_instance_with_network_no_id(self):
     body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]])
     del body_dict["server"]["networks"][0]["uuid"]
     request = self._get_create_request_json(body_dict)
     response = request.get_response(fakes.wsgi_app(init_only=("servers", "os-create-server-ext")))
     self.assertEqual(response.status_int, 400)
     self.assertIsNone(self.networks)
예제 #6
0
 def test_create_root_volume_bdm_v2(self):
     body = dict(server=dict(name='test_server',
                             imageRef=IMAGE_UUID,
                             flavorRef=2,
                             min_count=1,
                             max_count=1,
                             block_device_mapping_v2=[
                                 dict(
                                     source_type='volume',
                                     uuid='1',
                                     device_name='/dev/vda',
                                     boot_index=0,
                                     delete_on_termination=False,
                                 )
                             ]))
     req = fakes.HTTPRequest.blank('/v2/fake/os-volumes_boot')
     req.method = 'POST'
     req.body = jsonutils.dumps(body)
     req.headers['content-type'] = 'application/json'
     res = req.get_response(
         fakes.wsgi_app(init_only=('os-volumes_boot', 'servers')))
     self.assertEqual(res.status_int, 202)
     server = jsonutils.loads(res.body)['server']
     self.assertEqual(FAKE_UUID, server['id'])
     self.assertEqual(CONF.password_length, len(server['adminPass']))
     self.assertEqual(len(self._block_device_mapping_seen), 1)
     self.assertFalse(self._legacy_bdm_seen)
     self.assertEqual(self._block_device_mapping_seen[0]['volume_id'], '1')
     self.assertEqual(self._block_device_mapping_seen[0]['boot_index'], 0)
     self.assertEqual(self._block_device_mapping_seen[0]['device_name'],
                      '/dev/vda')
예제 #7
0
 def test_get_version_list(self):
     req = webob.Request.blank('/')
     req.accept = "application/json"
     res = req.get_response(fakes.wsgi_app())
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     versions = jsonutils.loads(res.body)["versions"]
     expected = [
         {
             "id": "v2.0",
             "status": "SUPPORTED",
             "version": "",
             "min_version": "",
             "updated": "2011-01-21T11:33:21Z",
             "links": [{
                 "rel": "self",
                 "href": "http://localhost/v2/",
             }],
         },
         {
             "id": "v2.1",
             "status": "CURRENT",
             "version": "2.3",
             "min_version": "2.1",
             "updated": "2013-07-23T11:33:21Z",
             "links": [{
                 "rel": "self",
                 "href": "http://localhost/v2.1/",
             }],
         },
     ]
     self.assertEqual(versions, expected)
예제 #8
0
    def test_malformed_xml(self):
        req = webob.Request.blank('/')
        req.method = 'POST'
        req.body = '<hi im not xml>'
        req.headers["content-type"] = "application/xml"

        res = req.get_response(fakes.wsgi_app())
        self.assertEqual(res.status_int, 400)
예제 #9
0
파일: test_api.py 프로젝트: hsluoyz/patron
    def test_malformed_xml(self):
        req = webob.Request.blank('/')
        req.method = 'POST'
        req.body = '<hi im not xml>'
        req.headers["content-type"] = "application/xml"

        res = req.get_response(fakes.wsgi_app())
        self.assertEqual(res.status_int, 400)
예제 #10
0
 def test_create_instance_with_network_no_id(self):
     body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]])
     del body_dict['server']['networks'][0]['uuid']
     request = self._get_create_request_json(body_dict)
     response = request.get_response(
         fakes.wsgi_app(init_only=('servers', 'os-create-server-ext')))
     self.assertEqual(response.status_int, 400)
     self.assertIsNone(self.networks)
예제 #11
0
 def test_create_instance_with_network_no_fixed_ip(self):
     body_dict = self._create_networks_request_dict([FAKE_NETWORKS[0]])
     del body_dict['server']['networks'][0]['fixed_ip']
     request = self._get_create_request_json(body_dict)
     response = request.get_response(
         fakes.wsgi_app(init_only=('servers', 'os-create-server-ext')))
     self.assertEqual(response.status_int, 202)
     self.assertEqual([('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', None)],
                      self.networks.as_tuples())
예제 #12
0
 def test_accept_version_v2(self):
     # Test Accept header specifying v2 returns v2 content.
     req = webob.Request.blank('/')
     req.accept = "application/json;version=2"
     res = req.get_response(fakes.wsgi_app(init_only=('versions',)))
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     body = jsonutils.loads(res.body)
     self.assertEqual(body['version']['id'], 'v2.0')
예제 #13
0
 def test_create_instance_with_security_group_json(self):
     security_groups = ["test", "test1"]
     self.stubs.Set(db, "security_group_get_by_name", return_security_group_get_by_name)
     self.stubs.Set(db, "instance_add_security_group", return_instance_add_security_group)
     body_dict = self._create_security_group_request_dict(security_groups)
     request = self._get_create_request_json(body_dict)
     response = request.get_response(fakes.wsgi_app(init_only=("servers", "os-create-server-ext")))
     self.assertEqual(response.status_int, 202)
     self.assertJsonEqual(self.security_group, security_groups)
예제 #14
0
 def test_accept_version_v2(self):
     # Test Accept header specifying v2 returns v2 content.
     req = webob.Request.blank('/')
     req.accept = "application/json;version=2"
     res = req.get_response(fakes.wsgi_app(init_only=('versions', )))
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     body = jsonutils.loads(res.body)
     self.assertEqual(body['version']['id'], 'v2.0')
예제 #15
0
 def test_auth_token_no_empty_headers(self):
     req = webob.Request.blank('/v2')
     req.headers['X-Auth-User'] = '******'
     req.headers['X-Auth-Key'] = 'user1_key'
     req.headers['X-Auth-Project-Id'] = 'user1_project'
     result = req.get_response(fakes.wsgi_app(use_no_auth=True))
     self.assertEqual(result.status, '204 No Content')
     self.assertNotIn('X-CDN-Management-Url', result.headers)
     self.assertNotIn('X-Storage-Url', result.headers)
예제 #16
0
 def test_authorize_user(self):
     req = webob.Request.blank('/v2')
     req.headers['X-Auth-User'] = '******'
     req.headers['X-Auth-Key'] = 'user1_key'
     req.headers['X-Auth-Project-Id'] = 'user1_project'
     result = req.get_response(fakes.wsgi_app(use_no_auth=True))
     self.assertEqual(result.status, '204 No Content')
     self.assertEqual(result.headers['X-Server-Management-Url'],
                      "http://localhost/v2/user1_project")
예제 #17
0
 def _make_request(self, url, body=None):
     req = webob.Request.blank(url)
     if body:
         req.method = 'POST'
         req.body = self._encode_body(body)
     req.content_type = self.content_type
     req.headers['Accept'] = self.content_type
     res = req.get_response(fakes.wsgi_app(init_only=('servers',)))
     return res
예제 #18
0
 def test_multi_choice_server_atom(self):
     """Make sure multi choice responses do not have content-type
     application/atom+xml (should use default of json)
     """
     req = webob.Request.blank('/servers')
     req.accept = "application/atom+xml"
     res = req.get_response(fakes.wsgi_app())
     self.assertEqual(res.status_int, 300)
     self.assertEqual(res.content_type, "application/json")
예제 #19
0
    def test_get_resources_with_mgr(self):

        app = fakes.wsgi_app(init_only=('flavors',))
        request = webob.Request.blank("/v2/fake/flavors/1?chewing=newblue")
        request.environ['api.version'] = '2'
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        response_data = jsonutils.loads(response.body)
        self.assertEqual('newblue', response_data['flavor']['googoose'])
        self.assertEqual("Pig Bands!", response_data['big_bands'])
예제 #20
0
 def test_get_server_by_id_verify_security_groups_json(self):
     self.stubs.Set(db, "instance_get", fakes.fake_instance_get())
     self.stubs.Set(db, "instance_get_by_uuid", fakes.fake_instance_get())
     req = webob.Request.blank("/v2/fake/os-create-server-ext/1")
     req.headers["Content-Type"] = "application/json"
     response = req.get_response(fakes.wsgi_app(init_only=("os-create-server-ext", "servers")))
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     expected_security_group = [{"name": "test"}]
     self.assertEqual(res_dict["server"].get("security_groups"), expected_security_group)
예제 #21
0
    def test_get_resources_with_mgr(self):

        app = fakes.wsgi_app(init_only=('flavors', ))
        request = webob.Request.blank("/v2/fake/flavors/1?chewing=newblue")
        request.environ['api.version'] = '2'
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        response_data = jsonutils.loads(response.body)
        self.assertEqual('newblue', response_data['flavor']['googoose'])
        self.assertEqual("Pig Bands!", response_data['big_bands'])
예제 #22
0
파일: test_api.py 프로젝트: hsluoyz/patron
    def test_vendor_content_type_json(self):
        ctype = 'application/vnd.openstack.compute+json'

        req = webob.Request.blank('/')
        req.headers['Accept'] = ctype

        res = req.get_response(fakes.wsgi_app())
        self.assertEqual(res.status_int, 200)
        self.assertEqual(res.content_type, ctype)

        jsonutils.loads(res.body)
예제 #23
0
    def test_vendor_content_type_json(self):
        ctype = 'application/vnd.openstack.compute+json'

        req = webob.Request.blank('/')
        req.headers['Accept'] = ctype

        res = req.get_response(fakes.wsgi_app())
        self.assertEqual(res.status_int, 200)
        self.assertEqual(res.content_type, ctype)

        jsonutils.loads(res.body)
예제 #24
0
 def test_path_content_type(self):
     # Test URL path specifying JSON returns JSON content.
     url = '/v2/fake/images/cedef40a-ed67-4d10-800e-17455edce175.json'
     req = webob.Request.blank(url)
     req.accept = "application/xml"
     res = req.get_response(fakes.wsgi_app(init_only=('images', )))
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     body = jsonutils.loads(res.body)
     self.assertEqual(body['image']['id'],
                      'cedef40a-ed67-4d10-800e-17455edce175')
예제 #25
0
 def test_path_content_type(self):
     # Test URL path specifying JSON returns JSON content.
     url = '/v2/fake/images/cedef40a-ed67-4d10-800e-17455edce175.json'
     req = webob.Request.blank(url)
     req.accept = "application/xml"
     res = req.get_response(fakes.wsgi_app(init_only=('images',)))
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     body = jsonutils.loads(res.body)
     self.assertEqual(body['image']['id'],
                      'cedef40a-ed67-4d10-800e-17455edce175')
예제 #26
0
    def test_multi_choice_server(self):
        uuid = str(stdlib_uuid.uuid4())
        req = webob.Request.blank('/servers/' + uuid)
        req.accept = "application/json"
        res = req.get_response(fakes.wsgi_app())
        self.assertEqual(res.status_int, 300)
        self.assertEqual(res.content_type, "application/json")

        expected = {
            "choices": [
                {
                    "id":
                    "v2.0",
                    "status":
                    "SUPPORTED",
                    "links": [
                        {
                            "href": "http://localhost/v2/servers/" + uuid,
                            "rel": "self",
                        },
                    ],
                    "media-types": [
                        {
                            "base":
                            "application/json",
                            "type":
                            "application/vnd.openstack.compute+json"
                            ";version=2"
                        },
                    ],
                },
                {
                    "id":
                    "v2.1",
                    "status":
                    "CURRENT",
                    "links": [
                        {
                            "href": "http://localhost/v2.1/servers/" + uuid,
                            "rel": "self",
                        },
                    ],
                    "media-types": [{
                        "base":
                        "application/json",
                        "type":
                        "application/vnd.openstack.compute+json;version=2.1",
                    }],
                },
            ],
        }

        self.assertThat(jsonutils.loads(res.body),
                        matchers.DictMatches(expected))
예제 #27
0
 def test_get_server_by_id_verify_security_groups_json(self):
     self.stubs.Set(db, 'instance_get', fakes.fake_instance_get())
     self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get())
     req = webob.Request.blank('/v2/fake/os-create-server-ext/1')
     req.headers['Content-Type'] = 'application/json'
     response = req.get_response(
         fakes.wsgi_app(init_only=('os-create-server-ext', 'servers')))
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     expected_security_group = [{"name": "test"}]
     self.assertEqual(res_dict['server'].get('security_groups'),
                      expected_security_group)
예제 #28
0
 def test_create_instance_with_security_group_json(self):
     security_groups = ['test', 'test1']
     self.stubs.Set(db, 'security_group_get_by_name',
                    return_security_group_get_by_name)
     self.stubs.Set(db, 'instance_add_security_group',
                    return_instance_add_security_group)
     body_dict = self._create_security_group_request_dict(security_groups)
     request = self._get_create_request_json(body_dict)
     response = request.get_response(
         fakes.wsgi_app(init_only=('servers', 'os-create-server-ext')))
     self.assertEqual(response.status_int, 202)
     self.assertJsonEqual(self.security_group, security_groups)
예제 #29
0
    def test_get_resources_with_stub_mgr(self):
        class GooGoose(wsgi.Controller):
            @wsgi.extends
            def show(self, req, resp_obj, id):
                # only handle JSON responses
                resp_obj.obj['flavor']['googoose'] = req.GET.get('chewing')

        req_ext = base_extensions.ControllerExtension(
            StubControllerExtension(), 'flavors', GooGoose())

        manager = StubExtensionManager(None, None, None, req_ext)
        app = fakes.wsgi_app(ext_mgr=manager)
        request = webob.Request.blank("/v2/fake/flavors/1?chewing=bluegoo")
        request.environ['api.version'] = '2'
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        response_data = jsonutils.loads(response.body)
        self.assertEqual('bluegoo', response_data['flavor']['googoose'])
예제 #30
0
    def test_get_resources_with_stub_mgr(self):
        class GooGoose(wsgi.Controller):
            @wsgi.extends
            def show(self, req, resp_obj, id):
                # only handle JSON responses
                resp_obj.obj['flavor']['googoose'] = req.GET.get('chewing')

        req_ext = base_extensions.ControllerExtension(
            StubControllerExtension(), 'flavors', GooGoose())

        manager = StubExtensionManager(None, None, None, req_ext)
        app = fakes.wsgi_app(ext_mgr=manager)
        request = webob.Request.blank("/v2/fake/flavors/1?chewing=bluegoo")
        request.environ['api.version'] = '2'
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        response_data = jsonutils.loads(response.body)
        self.assertEqual('bluegoo', response_data['flavor']['googoose'])
예제 #31
0
 def _test_get_version_2_detail(self, url, accept=None):
     if accept is None:
         accept = "application/json"
     req = webob.Request.blank(url)
     req.accept = accept
     res = req.get_response(fakes.wsgi_app())
     self.assertEqual(res.status_int, 200)
     self.assertEqual(res.content_type, "application/json")
     version = jsonutils.loads(res.body)
     expected = {
         "version": {
             "id":
             "v2.0",
             "status":
             "SUPPORTED",
             "version":
             "",
             "min_version":
             "",
             "updated":
             "2011-01-21T11:33:21Z",
             "links": [
                 {
                     "rel": "self",
                     "href": "http://localhost/v2/",
                 },
                 {
                     "rel": "describedby",
                     "type": "text/html",
                     "href": EXP_LINKS['v2.0']['html'],
                 },
             ],
             "media-types": [
                 {
                     "base":
                     "application/json",
                     "type":
                     "application/"
                     "vnd.openstack.compute+json;version=2",
                 },
             ],
         },
     }
     self.assertEqual(expected, version)
예제 #32
0
 def _setup_app_and_controller(self):
     self.app_server = fakes.wsgi_app(init_only=('servers',))
     self.controller = keypairs_v2.KeypairController()
예제 #33
0
 def _create_instance_with_user_data_json(self, networks):
     body_dict = self._create_user_data_request_dict(networks)
     request = self._get_create_request_json(body_dict)
     response = request.get_response(fakes.wsgi_app(init_only=("servers", "os-create-server-ext")))
     return request, response, self.user_data
예제 #34
0
 def _make_request(self, url):
     req = webob.Request.blank(url)
     req.headers['Accept'] = self.content_type
     res = req.get_response(fakes.wsgi_app())
     return res
예제 #35
0
 def _make_request(self, url):
     req = webob.Request.blank(url)
     req.headers['Accept'] = self.content_type
     res = req.get_response(fakes.wsgi_app(init_only=('servers',)))
     return res
예제 #36
0
 def _setup_app(self):
     return fakes.wsgi_app(init_only=('flavors',),
                           fake_auth_context=self._get_http_request().
                               environ['patron.context'])
예제 #37
0
 def _setup_app_and_controller(self):
     self.app_server = fakes.wsgi_app(init_only=('servers', ))
     self.controller = keypairs_v2.KeypairController()
예제 #38
0
 def _create_instance_with_user_data_json(self, networks):
     body_dict = self._create_user_data_request_dict(networks)
     request = self._get_create_request_json(body_dict)
     response = request.get_response(
         fakes.wsgi_app(init_only=('servers', 'os-create-server-ext')))
     return request, response, self.user_data
예제 #39
0
 def _make_request(self, url):
     req = webob.Request.blank(url)
     req.headers["Accept"] = self.content_type
     res = req.get_response(fakes.wsgi_app())
     return res
예제 #40
0
 def _get_app(self):
     return fakes.wsgi_app()
 def _make_request(self, url):
     req = webob.Request.blank(url)
     req.headers['Accept'] = self.content_type
     res = req.get_response(fakes.wsgi_app(init_only=(
                              'os-virtual-interfaces', 'OS-EXT-VIF-NET')))
     return res
예제 #42
0
 def _setup_wsgi(self):
     self.flags(
         osapi_compute_extension=[
             'patron.api.openstack.compute.contrib.select_extensions'],
         osapi_compute_ext_list=['Config_drive'])
     self.app = fakes.wsgi_app(init_only=('servers',))
예제 #43
0
 def test_get_version_2_versions_invalid(self):
     req = webob.Request.blank('/v2/versions/1234')
     req.accept = "application/json"
     res = req.get_response(fakes.wsgi_app())
     self.assertEqual(404, res.status_int)
예제 #44
0
 def _get_app(self):
     return fakes.wsgi_app()
예제 #45
0
 def _setup_app(self):
     return fakes.wsgi_app(init_only=('flavors', ),
                           fake_auth_context=self._get_http_request().
                           environ['patron.context'])
예제 #46
0
 def _get_app(self):
     return fakes.wsgi_app(init_only=('servers',))
예제 #47
0
 def _setup_app(self):
     self.app = fakes.wsgi_app(init_only=('flavors',))