mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-19 04:12:02 +02:00
Initial commit: OCA Server Auth packages (29 packages)
This commit is contained in:
commit
3ed80311c4
1325 changed files with 127292 additions and 0 deletions
166
odoo-bringout-oca-server-auth-vault/vault/tests/test_vault.py
Normal file
166
odoo-bringout-oca-server-auth-vault/vault/tests/test_vault.py
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
# © 2021 Florian Kantelberg - initOS GmbH
|
||||
# Copyright 2022 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tests import TransactionCase
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TestVault(TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.vault = self.env["vault"].create({"name": "Vault"})
|
||||
self.entry = self.env["vault.entry"].create(
|
||||
{"vault_id": self.vault.id, "name": "Entry"}
|
||||
)
|
||||
self.child = self.env["vault.entry"].create(
|
||||
{"vault_id": self.vault.id, "name": "Child", "parent_id": self.entry.id}
|
||||
)
|
||||
|
||||
def test_entry_path(self):
|
||||
self.assertEqual(self.entry.complete_name, "Entry")
|
||||
self.assertEqual(self.child.complete_name, "Entry / Child")
|
||||
|
||||
def test_wizard_actions(self):
|
||||
values = self.child.action_open_import_wizard()
|
||||
self.assertEqual(values["context"]["default_parent_id"], self.child.id)
|
||||
|
||||
values = self.vault.action_open_import_wizard()
|
||||
self.assertNotIn("default_parent_id", values["context"])
|
||||
|
||||
values = self.child.action_open_export_wizard()
|
||||
self.assertEqual(values["context"]["default_entry_id"], self.child.id)
|
||||
|
||||
values = self.vault.action_open_export_wizard()
|
||||
self.assertNotIn("default_entry_id", values["context"])
|
||||
|
||||
def test_master_key(self):
|
||||
right = self.vault.right_ids
|
||||
self.assertEqual(self.vault.master_key, right.master_key)
|
||||
|
||||
self.vault.master_key = "test"
|
||||
self.assertEqual(right.key, "test")
|
||||
|
||||
def test_share_public_key(self):
|
||||
key = self.env["res.users.key"].create(
|
||||
{
|
||||
"user_id": self.vault.user_id.id,
|
||||
"public": "a public key",
|
||||
"salt": "42",
|
||||
"iv": "2424",
|
||||
"iterations": 4000,
|
||||
"private": "24",
|
||||
}
|
||||
)
|
||||
|
||||
expected = {"user": 1, "public": key.public}
|
||||
self.assertIn(expected, self.vault.share_public_keys())
|
||||
|
||||
def test_keys(self):
|
||||
key = self.env["res.users.key"].create(
|
||||
{
|
||||
"user_id": self.vault.user_id.id,
|
||||
"public": "a public key",
|
||||
"salt": "42",
|
||||
"iv": "2424",
|
||||
"iterations": 4000,
|
||||
"private": "24",
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEqual(set("0123456789abcdef:"), set(key.fingerprint))
|
||||
|
||||
key.public = ""
|
||||
self.assertEqual(key.fingerprint, False)
|
||||
|
||||
def test_store_keys(self):
|
||||
model = self.env["res.users.key"]
|
||||
|
||||
# Raise some errors because of wrong parameters
|
||||
with self.assertRaises(ValidationError):
|
||||
model.store(1, "iv", "private", "public", 42, 42)
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
model.store(3000, "iv", "private", "public", "salt", 42)
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
model.store(4000, "iv", "private", "public", "salt", "abc")
|
||||
|
||||
# Actually store a new key
|
||||
uuid = model.store(4000, "iv", "private", "public", "salt", 42)
|
||||
rec = model.search([("uuid", "=", uuid)])
|
||||
self.assertEqual(rec.private, "private")
|
||||
self.assertTrue(rec.current)
|
||||
|
||||
# Don't store the same again
|
||||
uuid = model.store(4000, "iv", "private", "public", "salt", 42)
|
||||
self.assertFalse(uuid)
|
||||
|
||||
# Store a new one and disable the old one
|
||||
uuid = model.store(4000, "iv", "more private", "public", "salt", 42)
|
||||
self.assertFalse(rec.current)
|
||||
|
||||
rec = model.search([("uuid", "=", uuid)])
|
||||
self.assertEqual(rec.private, "more private")
|
||||
self.assertTrue(rec.current)
|
||||
|
||||
# Try to extract the public key again
|
||||
user_id = self.env["res.users"].search([], limit=1, order="id DESC").id
|
||||
public = model.extract_public_key(user_id + 1)
|
||||
self.assertFalse(public)
|
||||
public = model.extract_public_key(self.env.uid)
|
||||
self.assertEqual(public, "public")
|
||||
|
||||
def test_vault_keys(self):
|
||||
keys = self.env.user.get_vault_keys()
|
||||
self.assertEqual(keys, {})
|
||||
|
||||
data = {
|
||||
"user_id": self.env.user.id,
|
||||
"public": "a public key",
|
||||
"salt": "42",
|
||||
"iv": "2424",
|
||||
"iterations": 4000,
|
||||
"private": "24",
|
||||
}
|
||||
self.env["res.users.key"].create(data)
|
||||
|
||||
keys = self.env.user.get_vault_keys()
|
||||
for key in ["private", "public", "iv", "salt", "iterations"]:
|
||||
self.assertEqual(keys[key], data[key])
|
||||
|
||||
def test_vault_entry_recursion(self):
|
||||
child = self.env["vault.entry"].create(
|
||||
{"vault_id": self.vault.id, "name": "Entry", "parent_id": self.entry.id}
|
||||
)
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
self.entry.parent_id = child.id
|
||||
|
||||
def test_search_expired(self):
|
||||
entry = self.env["vault.entry"]
|
||||
self.assertEqual(entry._search_expired("in", []), [])
|
||||
|
||||
domain = entry._search_expired("=", True)
|
||||
self.assertEqual(domain[0][:2], ("expire_date", "<"))
|
||||
self.assertIsInstance(domain[0][2], datetime)
|
||||
|
||||
domain = entry._search_expired("!=", False)
|
||||
self.assertEqual(domain[0][:2], ("expire_date", "<"))
|
||||
self.assertIsInstance(domain[0][2], datetime)
|
||||
|
||||
domain = entry._search_expired("=", False)
|
||||
self.assertTrue(domain[0] == "|")
|
||||
self.assertIn(("expire_date", "=", False), domain)
|
||||
self.assertTrue(any(("expire_date", ">=") == d[:2] for d in domain))
|
||||
|
||||
def test_vault_entry_search_panel_limit(self):
|
||||
res = self.entry.search_panel_select_range("parent_id")
|
||||
total_items = self.env["vault.entry"].search_count([("child_ids", "!=", False)])
|
||||
self.assertEqual(len(res["values"]), total_items)
|
||||
Loading…
Add table
Add a link
Reference in a new issue