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)