libra/tests/test_lbaas_client.py
Andrew Hutchings c7cb4d67a9 More work on client
* Add status function
* Fix tests
* Fix options parser
2012-10-14 10:55:35 -07:00

120 lines
4.2 KiB
Python

import unittest
import json
import mock
import httplib2
import sys
from StringIO import StringIO
from libra.client.libraapi import LibraAPI
class TestLBaaSClientLibraAPI(unittest.TestCase):
def setUp(self):
self.api = LibraAPI('username', 'password', 'tenant', 'auth_test', 'region')
self.api.nova.management_url = "http://example.com"
self.api.nova.auth_token = "token"
def tearDown(self):
pass
def testListLb(self):
fake_response = httplib2.Response({"status": '200'})
fake_body = json.dumps({
"loadBalancers":[
{
"name":"lb-site1",
"id":"71",
"protocol":"HTTP",
"port":"80",
"algorithm":"LEAST_CONNECTIONS",
"status":"ACTIVE",
"created":"2010-11-30T03:23:42Z",
"updated":"2010-11-30T03:23:44Z"
},
{
"name":"lb-site2",
"id":"166",
"protocol":"TCP",
"port":"9123",
"algorithm":"ROUND_ROBIN",
"status":"ACTIVE",
"created":"2010-11-30T03:23:42Z",
"updated":"2010-11-30T03:23:44Z"
}
]
})
mock_request = mock.Mock(return_value=(fake_response, fake_body))
with mock.patch.object(httplib2.Http, "request", mock_request):
with mock.patch('time.time', mock.Mock(return_value=1234)):
orig = sys.stdout
try:
out = StringIO()
sys.stdout = out
self.api.list_lb()
output = out.getvalue().strip()
self.assertRegexpMatches(output, 'lb-site1')
self.assertRegexpMatches(output, '71')
self.assertRegexpMatches(output, 'HTTP')
self.assertRegexpMatches(output, '80')
self.assertRegexpMatches(output, 'LEAST_CONNECTIONS')
self.assertRegexpMatches(output, 'ACTIVE')
self.assertRegexpMatches(output, '2010-11-30T03:23:42Z')
self.assertRegexpMatches(output, '2010-11-30T03:23:44Z')
finally:
sys.stdout = orig
def testGetLb(self):
fake_response = httplib2.Response({"status": '200'})
fake_body = json.dumps({
"id": "2000",
"name":"sample-loadbalancer",
"protocol":"HTTP",
"port": "80",
"algorithm":"ROUND_ROBIN",
"status":"ACTIVE",
"created":"2010-11-30T03:23:42Z",
"updated":"2010-11-30T03:23:44Z",
"virtualIps":[
{
"id": "1000",
"address":"2001:cdba:0000:0000:0000:0000:3257:9652",
"type":"PUBLIC",
"ipVersion":"IPV6"
}],
"nodes": [
{
"id": "1041",
"address":"10.1.1.1",
"port": "80",
"condition":"ENABLED",
"status":"ONLINE"
},
{
"id": "1411",
"address":"10.1.1.2",
"port": "80",
"condition":"ENABLED",
"status":"ONLINE"
}],
"sessionPersistence":{
"persistenceType":"HTTP_COOKIE"
},
"connectionThrottle":{
"maxRequestRate": "50",
"rateInterval": "60"
}
})
mock_request = mock.Mock(return_value=(fake_response, fake_body))
with mock.patch.object(httplib2.Http, "request", mock_request):
with mock.patch('time.time', mock.Mock(return_value=1234)):
orig = sys.stdout
try:
out = StringIO()
sys.stdout = out
self.api.get_lb('2000')
output = out.getvalue().strip()
self.assertRegexpMatches(output, 'HTTP_COOKIE')
finally:
sys.stdout = orig