Add _match_api_key() class method to fusion.billing.service, with a TDD test suite (TestServiceApiKey) covering key generation, hash storage, positive match, and rejection of bad/inactive keys. Also fix fcb_test_on_trial.sh to use --http-port 8070, as Odoo 19 forces http_spawn() even under --no-http when --test-enable is set. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
1.0 KiB
Python
26 lines
1.0 KiB
Python
# -*- 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))
|