More tests. Removed one API call because it was a duplicate.

This commit is contained in:
Mark Gius 2011-07-01 14:38:15 -07:00
parent 7746fd6c93
commit 2b925d48ed
4 changed files with 300 additions and 17 deletions

View File

@ -310,11 +310,6 @@ def flavor_get(request, flavor_id):
def flavor_list(request):
return [Flavor(f) for f in extras_api(request).flavors.list()]
def flavor_list_admin(request):
return [Flavor(f) for f in extras_api(request).flavors.list()]
# this method is currently unused in django_openstack
def image_all_metadata(request):
images = glance_api(request).get_images_detailed()

View File

@ -81,7 +81,7 @@ def index(request):
flavors = []
try:
flavors = api.flavor_list_admin(request)
flavors = api.flavor_list(request)
except api_exceptions.ApiException, e:
LOG.error('ApiException while fetching usage info', exc_info=True)
messages.error(request, 'Unable to get usage info: %s' % e.message)

View File

@ -18,6 +18,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import cloudfiles
import mox
from django import http
@ -25,19 +26,25 @@ from django import test
from django.conf import settings
from django.utils import unittest
from django_openstack import api
from glance import client as glance_client
from mox import IsA
from openstack import compute as OSCompute
from openstackx import admin as OSAdmin
from openstackx import auth as OSAuth
from openstackx import extras as OSExtras
TEST_CONSOLE_KIND = 'vnc'
TEST_HOSTNAME = 'hostname'
TEST_INSTANCE_ID = '2'
TEST_PASSWORD = '12345'
TEST_PORT = 8000
TEST_RETURN = 'retValue'
TEST_TENANT_DESCRIPTION = 'tenantDescription'
TEST_TENANT_ID = '1234'
TEST_TOKEN = 'aToken'
TEST_TOKEN_ID = 'userId'
TEST_URL = 'http://testserver/something/v1.0'
TEST_URL = 'http://%s:%s/something/v1.0' % (TEST_HOSTNAME, TEST_PORT)
TEST_USERNAME = 'testUser'
class Server(object):
@ -266,13 +273,55 @@ class ServerWrapperTests(test.TestCase):
self.mox.VerifyAll()
class AdminApiTests(test.TestCase):
class AccountApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
self.request = http.HttpRequest()
self.request.session = dict()
self.request.session['token'] = TEST_TOKEN
def tearDown(self):
self.mox.UnsetStubs()
def stub_account_api(self):
self.mox.StubOutWithMock(api, 'account_api')
account_api = self.mox.CreateMock(OSExtras.Account)
api.account_api(IsA(http.HttpRequest)).AndReturn(account_api)
return account_api
def test_get_account_api(self):
self.mox.StubOutClassWithMocks(OSExtras, 'Account')
OSExtras.Account(auth_token=TEST_TOKEN, management_url=TEST_URL)
self.mox.StubOutWithMock(api, 'url_for')
api.url_for(IsA(http.HttpRequest), 'keystone', True).AndReturn(TEST_URL)
api.url_for(IsA(http.HttpRequest), 'keystone', True).AndReturn(TEST_URL)
self.mox.ReplayAll()
self.assertIsNotNone(api.account_api(self.request))
self.mox.VerifyAll()
class AdminApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
self.request = http.HttpRequest()
self.request.session = dict()
self.request.session['token'] = TEST_TOKEN
def tearDown(self):
self.mox.UnsetStubs()
def stub_admin_api(self, count=1):
self.mox.StubOutWithMock(api, 'admin_api')
admin_api = self.mox.CreateMock(OSAdmin.Admin)
for i in range(count):
api.admin_api(IsA(http.HttpRequest)).AndReturn(admin_api)
return admin_api
def test_get_admin_api(self):
self.mox.StubOutClassWithMocks(OSAdmin, 'Admin')
OSAdmin.Admin(auth_token=TEST_TOKEN, management_url=TEST_URL)
@ -281,16 +330,54 @@ class AdminApiTests(test.TestCase):
api.url_for(IsA(http.HttpRequest), 'nova', True).AndReturn(TEST_URL)
api.url_for(IsA(http.HttpRequest), 'nova', True).AndReturn(TEST_URL)
request = http.HttpRequest()
request.session = dict()
request.session['token'] = TEST_TOKEN
self.mox.ReplayAll()
self.assertIsNotNone(api.admin_api(self.request))
self.mox.VerifyAll()
def test_flavor_create(self):
FLAVOR_DISK = 1000
FLAVOR_ID = 6
FLAVOR_MEMORY = 1024
FLAVOR_NAME = 'newFlavor'
FLAVOR_VCPU = 2
admin_api = self.stub_admin_api()
admin_api.flavors = self.mox.CreateMockAnything()
admin_api.flavors.create(FLAVOR_NAME, FLAVOR_MEMORY, FLAVOR_VCPU,
FLAVOR_DISK, FLAVOR_ID).AndReturn(TEST_RETURN)
self.mox.ReplayAll()
self.assertIsNotNone(api.admin_api(request))
ret_val = api.flavor_create(self.request, FLAVOR_NAME,
str(FLAVOR_MEMORY), str(FLAVOR_VCPU),
str(FLAVOR_DISK), FLAVOR_ID)
self.assertIsInstance(ret_val, api.Flavor)
self.assertEqual(ret_val._apiresource, TEST_RETURN)
self.mox.VerifyAll()
def test_flavor_delete(self):
FLAVOR_ID = 6
admin_api = self.stub_admin_api(count=2)
admin_api.flavors = self.mox.CreateMockAnything()
admin_api.flavors.delete(FLAVOR_ID, False)
admin_api.flavors.delete(FLAVOR_ID, True)
self.mox.ReplayAll()
ret_val = api.flavor_delete(self.request, FLAVOR_ID)
self.assertIsNone(ret_val)
ret_val = api.flavor_delete(self.request, FLAVOR_ID, purge=True)
self.assertIsNone(ret_val)
class AuthApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
@ -415,10 +502,20 @@ class AuthApiTests(test.TestCase):
class ComputeApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
self.request = http.HttpRequest()
self.request.session = {}
self.request.session['token'] = TEST_TOKEN
def tearDown(self):
self.mox.UnsetStubs()
def stub_compute_api(self, count=1):
self.mox.StubOutWithMock(api, 'compute_api')
compute_api = self.mox.CreateMock(OSCompute.Compute)
for i in range(count):
api.compute_api(IsA(http.HttpRequest)).AndReturn(compute_api)
return compute_api
def test_get_compute_api(self):
class ComputeClient(object):
__slots__ = ['auth_token', 'management_url']
@ -435,13 +532,9 @@ class ComputeApiTests(test.TestCase):
api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
request = http.HttpRequest()
request.session = {}
request.session['token'] = TEST_TOKEN
self.mox.ReplayAll()
compute_api = api.compute_api(request)
compute_api = api.compute_api(self.request)
self.assertIsNotNone(compute_api)
self.assertEqual(compute_api.client.auth_token, TEST_TOKEN)
@ -449,11 +542,202 @@ class ComputeApiTests(test.TestCase):
self.mox.VerifyAll()
def test_flavor_get(self):
FLAVOR_ID = 6
compute_api = self.stub_compute_api()
compute_api.flavors = self.mox.CreateMockAnything()
compute_api.flavors.get(FLAVOR_ID).AndReturn(TEST_RETURN)
self.mox.ReplayAll()
ret_val = api.flavor_get(self.request, FLAVOR_ID)
self.assertIsInstance(ret_val, api.Flavor)
self.assertEqual(ret_val._apiresource, TEST_RETURN)
self.mox.VerifyAll()
class ExtrasApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
self.request = http.HttpRequest()
self.request.session = dict()
self.request.session['token'] = TEST_TOKEN
def tearDown(self):
self.mox.UnsetStubs()
def stub_extras_api(self, count=1):
self.mox.StubOutWithMock(api, 'extras_api')
extras_api = self.mox.CreateMock(OSExtras.Extras)
for i in range(count):
api.extras_api(IsA(http.HttpRequest)).AndReturn(extras_api)
return extras_api
def test_get_extras_api(self):
self.mox.StubOutClassWithMocks(OSExtras, 'Extras')
OSExtras.Extras(auth_token=TEST_TOKEN, management_url=TEST_URL)
self.mox.StubOutWithMock(api, 'url_for')
api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
self.mox.ReplayAll()
self.assertIsNotNone(api.extras_api(self.request))
self.mox.VerifyAll()
def test_console_create(self):
extras_api = self.stub_extras_api(count=2)
extras_api.consoles = self.mox.CreateMockAnything()
extras_api.consoles.create(TEST_INSTANCE_ID, TEST_CONSOLE_KIND).AndReturn(TEST_RETURN)
extras_api.consoles.create(TEST_INSTANCE_ID, None).AndReturn(TEST_RETURN + '2')
self.mox.ReplayAll()
ret_val = api.console_create(self.request, TEST_INSTANCE_ID, TEST_CONSOLE_KIND)
self.assertIsInstance(ret_val, api.Console)
self.assertEqual(ret_val._apiresource, TEST_RETURN)
ret_val = api.console_create(self.request, TEST_INSTANCE_ID)
self.assertIsInstance(ret_val, api.Console)
self.assertEqual(ret_val._apiresource, TEST_RETURN + '2')
self.mox.VerifyAll()
def test_flavor_list(self):
flavors = (TEST_RETURN, TEST_RETURN + '2')
extras_api = self.stub_extras_api()
extras_api.flavors = self.mox.CreateMockAnything()
extras_api.flavors.list().AndReturn(flavors)
self.mox.ReplayAll()
ret_val = api.flavor_list(self.request)
self.assertEqual(len(ret_val), len(flavors))
for flavor in ret_val:
self.assertIsInstance(flavor, api.Flavor)
self.assertIn(flavor._apiresource, flavors)
self.mox.VerifyAll()
class GlanceApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
self.request = http.HttpRequest()
self.request.session = dict()
self.request.session['token'] = TEST_TOKEN
def tearDown(self):
self.mox.UnsetStubs()
def stub_glance_api(self, count=1):
self.mox.StubOutWithMock(api, 'glance_api')
glance_api = self.mox.CreateMock(glance_client.Client)
for i in range(count):
api.glance_api(IsA(http.HttpRequest)).AndReturn(glance_api)
return glance_api
def test_get_glance_api(self):
self.mox.StubOutClassWithMocks(glance_client, 'Client')
glance_client.Client(TEST_HOSTNAME, TEST_PORT)
self.mox.StubOutWithMock(api, 'url_for')
api.url_for(IsA(http.HttpRequest), 'glance').AndReturn(TEST_URL)
self.mox.ReplayAll()
self.assertIsNotNone(api.glance_api(self.request))
self.mox.VerifyAll()
def test_image_create(self):
IMAGE_FILE = 'someData'
IMAGE_META = {'metadata': 'foo'}
glance_api = self.stub_glance_api()
glance_api.add_image(IMAGE_META, IMAGE_FILE).AndReturn(TEST_RETURN)
self.mox.ReplayAll()
ret_val = api.image_create(self.request, IMAGE_META, IMAGE_FILE)
self.assertIsInstance(ret_val, api.Image)
self.assertEqual(ret_val._apidict, TEST_RETURN)
self.mox.VerifyAll()
def test_image_delete(self):
IMAGE_ID = '1'
glance_api = self.stub_glance_api()
glance_api.delete_image(IMAGE_ID).AndReturn(TEST_RETURN)
self.mox.ReplayAll()
ret_val = api.image_delete(self.request, IMAGE_ID)
self.assertEqual(ret_val, TEST_RETURN)
self.mox.VerifyAll()
def test_image_get(self):
IMAGE_ID = '1'
glance_api = self.stub_glance_api()
glance_api.get_image(IMAGE_ID).AndReturn([TEST_RETURN])
self.mox.ReplayAll()
ret_val = api.image_get(self.request, IMAGE_ID)
self.assertIsInstance(ret_val, api.Image)
self.assertEqual(ret_val._apidict, TEST_RETURN)
def test_image_list_detailed(self):
images = (TEST_RETURN, TEST_RETURN + '2')
glance_api = self.stub_glance_api()
glance_api.get_images_detailed().AndReturn(images)
self.mox.ReplayAll()
ret_val = api.image_list_detailed(self.request)
self.assertEqual(len(ret_val), len(images))
for image in ret_val:
self.assertIsInstance(image, api.Image)
self.assertIn(image._apidict, images)
self.mox.VerifyAll()
class SwiftApiTests(test.TestCase):
def setUp(self):
self.mox = mox.Mox()
def tearDown(self):
self.mox.UnsetStubs()
def test_get_swift_api(self):
self.mox.StubOutWithMock(cloudfiles, 'get_connection')
swiftuser = ':'.join((settings.SWIFT_ACCOUNT, settings.SWIFT_USER))
cloudfiles.get_connection(swiftuser,
settings.SWIFT_PASS,
authurl=settings.SWIFT_AUTHURL
).AndReturn(TEST_RETURN)
self.mox.ReplayAll()
self.assertEqual(api.swift_api(), TEST_RETURN)
self.mox.VerifyAll()

View File

@ -65,3 +65,7 @@ NOSE_ARGS = ['--nocapture',
MAILER_EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
EMAIL_BACKEND = MAILER_EMAIL_BACKEND
SWIFT_ACCOUNT = 'test'
SWIFT_USER = 'tester'
SWIFT_PASS = 'testing'
SWIFT_AUTHURL = 'http://swift/swiftapi/v1.0'