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')