oca-server-auth/odoo-bringout-oca-server-auth-vault/vault/tests/test_inbox.py
2025-08-29 15:43:06 +02:00

115 lines
3.4 KiB
Python

# © 2021 Florian Kantelberg - initOS GmbH
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
from datetime import datetime
from uuid import uuid4
from odoo.tests import TransactionCase
_logger = logging.getLogger(__name__)
class TestShare(TransactionCase):
def test_user_inbox(self):
user = self.env["res.users"].create(
{"login": "test", "email": "test@test", "name": "test"}
)
user.action_new_inbox_token()
model = self.env["res.users"]
token = user.inbox_token
self.assertEqual(user, model.find_user_of_inbox(token))
self.assertIn(token, user.inbox_link)
user.inbox_enabled = False
self.assertEqual(model, model.find_user_of_inbox(token))
user.action_new_inbox_token()
self.assertNotEqual(user.inbox_token, token)
def test_inbox(self):
model = self.env["vault.inbox"]
user = self.env.user
vals = {
"name": f"Inbox {user.name}",
"secret": "secret",
"iv": "iv",
"user": user,
"key": "key",
"secret_file": "",
"filename": "",
}
# Should create a new inbox for the user
inbox = model.store_in_inbox(**vals)
self.assertEqual(inbox.secret, "secret")
self.assertEqual(inbox.accesses, 0)
self.assertIn(inbox.token, inbox.inbox_link)
# No change because of no accesses left
vals["secret"] = "new secret"
inbox.store_in_inbox(**vals)
self.assertEqual(inbox.secret, "secret")
self.assertEqual(inbox.accesses, 0)
# Change expected because 5 accesses left
inbox.accesses = 5
inbox.store_in_inbox(**vals)
self.assertEqual(inbox.secret, "new secret")
self.assertEqual(inbox.accesses, 4)
# No change because expired
vals["secret"] = "newer secret"
inbox.expiration = datetime(1970, 1, 1)
inbox.store_in_inbox(**vals)
self.assertEqual(inbox.secret, "new secret")
self.assertEqual(inbox.accesses, 4)
# Search for shares
self.assertEqual(inbox, model.find_inbox(inbox.token))
self.assertEqual(model, model.find_inbox(uuid4()))
def test_send_wizard(self):
user = self.env.user
wiz = self.env["vault.send.wizard"].create(
{
"name": uuid4(),
"iv": "iv",
"key_user": "key",
"key": "k",
"secret": uuid4(),
"user_id": user.id,
}
)
# Create a new inbox
wiz.action_send()
self.assertTrue(self.env["vault.inbox"].search([("name", "=", wiz.name)]))
def test_store_wizard(self):
vault = self.env["vault"].create({"name": "Vault"})
entry = self.env["vault.entry"].create({"vault_id": vault.id, "name": "Entry"})
wiz = self.env["vault.store.wizard"].create(
{
"vault_id": vault.id,
"entry_id": entry.id,
"name": uuid4(),
"iv": "iv",
"key": "k",
"secret": uuid4(),
"secret_temporary": "temp",
"model": "vault.field",
}
)
vault.right_ids.write({"key": uuid4()})
self.assertEqual(wiz.master_key, vault.right_ids.key)
wiz.action_store()
self.assertEqual(wiz.name, entry.field_ids.name)