diff --git a/rhodecode/tests/models/test_license.py b/rhodecode/tests/models/test_license.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/models/test_license.py @@ -0,0 +1,68 @@ +from __future__ import with_statement + +from rhodecode.tests import * +from rhodecode.tests.fixture import Fixture +from rhodecode.lib.compat import json +from rhodecode.model.license import LicenseModel + +fixture = Fixture() + +TEST_KEY = '' + + +class LicenseTest(BaseTestCase): + + def setUp(self): + global TEST_KEY + token = LicenseModel.generate_license_token() + TEST_KEY = token + + def test_encryption_decryption(self): + test_license = { + 'foo': 'baar', + 'signature': 'test' + } + enc = LicenseModel(key=TEST_KEY).encrypt(json.dumps(test_license)) + dec = json.loads(LicenseModel(key=TEST_KEY).decrypt(enc)) + self.assertEqual(test_license, dec) + + def test_signature(self): + enc_with_key = '1234567890123456' + test_license = { + 'foo': 'baar', + 'signature': None + } + test_license['signature'] = LicenseModel(key=TEST_KEY)\ + .generate_signature(test_license, enc_with_key) + + enc = LicenseModel(key=TEST_KEY).encrypt(json.dumps(test_license)) + signature = LicenseModel(key=TEST_KEY).verify(enc, enc_with_key) + + del test_license['signature'] + self.assertEqual(test_license, signature) + + def test_signature_mismatch(self): + enc_with_key = '1234567890123456' + test_license = { + 'foo': 'baar', + 'signature': 'cnashs62tdsbcsaaisuda6215sagc' + } + + enc = LicenseModel(key=TEST_KEY).encrypt(json.dumps(test_license)) + + self.assertRaises(TypeError, + lambda: LicenseModel(key=TEST_KEY).verify(enc, enc_with_key)) + + def test_generate_license_token(self): + token = LicenseModel.generate_license_token() + self.assertEqual(4, len(token.split('-'))) + + def test_get_license_info(self): + info = LicenseModel.get_license_info('', '') + self.assertEqual(info, {}) + + def test_get_license_info_default(self): + info = LicenseModel.get_license_info('', '', fill_defaults=True) + self.assertEqual(info['users'], 20) + self.assertEqual(info['valid_till'], 1421884937.512214) + self.assertEqual(info['email'], 'support@rhodecode.com')