mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-19 02:12:01 +02:00
115 lines
3.4 KiB
Python
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)
|