# -*- coding: utf-8 -*- from odoo.tests.common import TransactionCase, tagged @tagged('post_install', '-at_install') class TestServiceApiKey(TransactionCase): def setUp(self): super().setUp() self.Service = self.env['fusion.billing.service'].sudo() self.service = self.Service.create({'name': 'NexaCloud', 'code': 'nexacloud'}) def test_generate_and_match_api_key(self): raw = self.service.action_generate_api_key() self.assertTrue(raw and len(raw) >= 20) self.assertTrue(self.service.api_key_hash) self.assertNotEqual(raw, self.service.api_key_hash) # only the hash is stored matched = self.Service._match_api_key(raw) self.assertEqual(matched, self.service) def test_match_api_key_rejects_unknown_and_inactive(self): raw = self.service.action_generate_api_key() self.assertFalse(self.Service._match_api_key('nope-not-a-key')) self.service.active = False self.assertFalse(self.Service._match_api_key(raw))