django-musician/musician/tests.py

154 lines
5.0 KiB
Python

from django.test import TestCase
from .models import DatabaseService, UserAccount
from .utils import get_bootstraped_percent
class DatabaseTest(TestCase):
def test_database_from_json(self):
data = {
"url": "https://example.org/api/databases/1/",
"id": 1,
"name": "bluebird",
"type": "mysql",
"users": [
{
"url": "https://example.org/api/databaseusers/2/",
"id": 2,
"username": "bluebird"
}
],
"resources": [
{
"name": "disk",
"used": "1.798",
"allocated": None,
"unit": "MiB"
}
]
}
database = DatabaseService.new_from_json(data)
self.assertEqual(0, database.usage['percent'])
class DomainsTestCase(TestCase):
def test_domain_not_found(self):
response = self.client.post(
'/auth/login/',
{'username': 'admin', 'password': 'admin'},
follow=True
)
self.assertEqual(200, response.status_code)
response = self.client.get('/domains/3/')
self.assertEqual(404, response.status_code)
class UserAccountTest(TestCase):
def test_user_never_logged(self):
data = {
'billcontact': {'address': 'foo',
'city': 'Barcelona',
'country': 'ES',
'name': '',
'vat': '12345678Z',
'zipcode': '08080'},
'date_joined': '2020-01-14T12:38:31.684495Z',
'full_name': 'Pep',
'id': 2,
'is_active': True,
'language': 'EN',
'short_name': '',
'type': 'INDIVIDUAL',
'url': 'http://example.org/api/accounts/2/',
'username': 'pepe'
}
account = UserAccount.new_from_json(data)
self.assertIsNone(account.last_login)
def test_user_never_logged2(self):
# issue #6 Error on login when user never has logged into the system
data = {
'billcontact': {'address': 'bar',
'city': 'Barcelona',
'country': 'ES',
'name': '',
'vat': '12345678Z',
'zipcode': '34561'},
'date_joined': '2020-01-14T12:38:31Z',
'full_name': 'Pep',
'id': 2,
'is_active': True,
'language': 'CA',
'last_login': None,
'short_name': '',
'type': 'INDIVIDUAL',
'url': 'http://127.0.0.1:9090/api/accounts/2/',
'username': 'pepe'
}
account = UserAccount.new_from_json(data)
self.assertIsNone(account.last_login)
def test_user_without_billcontact(self):
data = {
'billcontact': None,
'date_joined': '2020-03-05T09:49:21Z',
'full_name': 'David Rock',
'id': 2,
'is_active': True,
'language': 'CA',
'last_login': '2020-03-19T10:21:49.504266Z',
'resources': [{'allocated': None,
'name': 'disk',
'unit': 'GiB',
'used': '0.000'},
{'allocated': None,
'name': 'traffic',
'unit': 'GiB',
'used': '0.000'}],
'short_name': '',
'type': 'STAFF',
'url': 'https://example.org/api/accounts/2/',
'username': 'drock'
}
account = UserAccount.new_from_json(data)
self.assertIsNotNone(account.billing)
class GetBootstrapedPercentTest(TestCase):
BS_WIDTH = [0, 25, 50, 100]
def test_exact_value(self):
value = get_bootstraped_percent(25, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 25)
def test_round_to_lower(self):
value = get_bootstraped_percent(26, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 25)
def test_round_to_higher(self):
value = get_bootstraped_percent(48, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 50)
def test_max_boundary(self):
value = get_bootstraped_percent(200, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 100)
def test_min_boundary(self):
value = get_bootstraped_percent(-10, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 0)
def test_invalid_total_is_zero(self):
value = get_bootstraped_percent(25, 0)
self.assertEqual(value, 0)
def test_invalid_total_is_none(self):
value = get_bootstraped_percent(25, None)
self.assertEqual(value, 0)