# -*- coding: utf-8 -*- from odoo.tests.common import TransactionCase, tagged @tagged('post_install', '-at_install') class TestFusionLoginAuditModel(TransactionCase): def test_model_exists_and_creates(self): """Audit row can be created with all expected fields.""" Audit = self.env['fusion.login.audit'].sudo() rec = Audit.create({ 'attempted_login': 'demo@example.com', 'result': 'success', 'ip_address': '203.0.113.5', 'user_agent_raw': 'Mozilla/5.0 Test', 'browser': 'Test 1.0', 'os': 'TestOS', 'device_type': 'desktop', 'database': self.env.cr.dbname, 'geo_lookup_state': 'pending', }) self.assertTrue(rec.id) self.assertEqual(rec.result, 'success') self.assertEqual(rec.geo_lookup_state, 'pending') self.assertEqual(rec.database, self.env.cr.dbname) self.assertTrue(rec.event_time) # default fires def test_failure_reason_optional(self): """failure_reason is null on success rows.""" rec = self.env['fusion.login.audit'].sudo().create({ 'attempted_login': 'demo@example.com', 'result': 'success', }) self.assertFalse(rec.failure_reason) def test_geo_state_internal_value(self): """`internal` is an accepted geo_lookup_state value (distinct from private_ip).""" rec = self.env['fusion.login.audit'].sudo().create({ 'attempted_login': 'demo@example.com', 'result': 'success', 'geo_lookup_state': 'internal', }) self.assertEqual(rec.geo_lookup_state, 'internal')