While not strictly necessary for files containing only ASCII characters, adding a line with "coding: utf-8" can guard against future SyntaxError's in case someone inserts a Unicode literal. This commit adds such lines to all .py files. The syntax used by this commit works with Python (of course). It also works with Emacs, which will recognize the special "-*-" marker and use the "coding" variable to correctly decode the file, even in an environment where UTF-8 is not the default file encoding. Existing coding lines were normalized to match the new lines added. Partial-bug: #1325193 Change-Id: I58bf93fea711fd25890356a397e594bd820c99e3
101 lines
2.8 KiB
Python
101 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2012 OpenStack LLC.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import copy
|
|
|
|
import fixtures
|
|
import six
|
|
import testtools
|
|
|
|
from ironicclient.common import http
|
|
|
|
|
|
class BaseTestCase(testtools.TestCase):
|
|
|
|
def setUp(self):
|
|
super(BaseTestCase, self).setUp()
|
|
self.useFixture(fixtures.FakeLogger())
|
|
|
|
|
|
class FakeAPI(object):
|
|
def __init__(self, responses):
|
|
self.responses = responses
|
|
self.calls = []
|
|
|
|
def _request(self, method, url, headers=None, body=None):
|
|
call = (method, url, headers or {}, body)
|
|
self.calls.append(call)
|
|
return self.responses[url][method]
|
|
|
|
def raw_request(self, *args, **kwargs):
|
|
response = self._request(*args, **kwargs)
|
|
body_iter = http.ResponseBodyIterator(six.StringIO(response[1]))
|
|
return FakeResponse(response[0]), body_iter
|
|
|
|
def json_request(self, *args, **kwargs):
|
|
response = self._request(*args, **kwargs)
|
|
return FakeResponse(response[0]), response[1]
|
|
|
|
|
|
class FakeConnection(object):
|
|
def __init__(self, response=None):
|
|
self._response = response
|
|
self._last_request = None
|
|
|
|
def request(self, method, conn_url, **kwargs):
|
|
self._last_request = (method, conn_url, kwargs)
|
|
|
|
def setresponse(self, response):
|
|
self._response = response
|
|
|
|
def getresponse(self):
|
|
return self._response
|
|
|
|
|
|
class FakeResponse(object):
|
|
def __init__(self, headers, body=None, version=None, status=None,
|
|
reason=None):
|
|
""":param headers: dict representing HTTP response headers
|
|
:param body: file-like object
|
|
"""
|
|
self.headers = headers
|
|
self.body = body
|
|
self.version = version
|
|
self.status = status
|
|
self.reason = reason
|
|
|
|
def getheaders(self):
|
|
return copy.deepcopy(self.headers).items()
|
|
|
|
def getheader(self, key, default):
|
|
return self.headers.get(key, default)
|
|
|
|
def read(self, amt):
|
|
return self.body.read(amt)
|
|
|
|
|
|
class FakeServiceCatalog():
|
|
def url_for(self, endpoint_type, service_type):
|
|
return 'http://localhost:6385/v1/f14b41234'
|
|
|
|
|
|
class FakeKeystone():
|
|
service_catalog = FakeServiceCatalog()
|
|
|
|
def __init__(self, auth_token):
|
|
self.auth_token = auth_token
|