from helpers import create_vault, TEST_SEED, TEST_PASSWORD
import pytest

from seedpass.core.entry_management import EntryManager
from seedpass.core.backup import BackupManager
from seedpass.core.config_manager import ConfigManager


def test_modify_totp_entry_period_digits_and_archive(tmp_path):
    vault, _ = create_vault(tmp_path, TEST_SEED, TEST_PASSWORD)
    cfg_mgr = ConfigManager(vault, tmp_path)
    backup_mgr = BackupManager(tmp_path, cfg_mgr)
    em = EntryManager(vault, backup_mgr)

    em.add_totp("Example", TEST_SEED, period=30, digits=6)
    em.modify_entry(0, period=60, digits=8, archived=True)

    entry = em.retrieve_entry(0)
    assert entry["period"] == 60
    assert entry["digits"] == 8
    assert entry["archived"] is True


def test_modify_totp_entry_invalid_field(tmp_path):
    vault, _ = create_vault(tmp_path, TEST_SEED, TEST_PASSWORD)
    cfg_mgr = ConfigManager(vault, tmp_path)
    backup_mgr = BackupManager(tmp_path, cfg_mgr)
    em = EntryManager(vault, backup_mgr)

    em.add_totp("Example", TEST_SEED)
    with pytest.raises(ValueError):
        em.modify_entry(0, username="alice")
