mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-09 15:58:48 +00:00
69 lines
1.6 KiB
Python
69 lines
1.6 KiB
Python
from pathlib import Path
|
|
import pyperclip
|
|
import threading
|
|
|
|
import sys
|
|
|
|
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
|
|
|
from utils.clipboard import copy_to_clipboard
|
|
|
|
|
|
def test_copy_to_clipboard_clears(monkeypatch):
|
|
clipboard = {"text": ""}
|
|
|
|
def fake_copy(val):
|
|
clipboard["text"] = val
|
|
|
|
def fake_paste():
|
|
return clipboard["text"]
|
|
|
|
callbacks = {}
|
|
|
|
class DummyTimer:
|
|
def __init__(self, delay, func):
|
|
callbacks["delay"] = delay
|
|
callbacks["func"] = func
|
|
|
|
def start(self):
|
|
callbacks["started"] = True
|
|
|
|
monkeypatch.setattr(pyperclip, "copy", fake_copy)
|
|
monkeypatch.setattr(pyperclip, "paste", fake_paste)
|
|
monkeypatch.setattr(threading, "Timer", DummyTimer)
|
|
|
|
copy_to_clipboard("secret", 2)
|
|
assert clipboard["text"] == "secret"
|
|
assert callbacks["delay"] == 2
|
|
assert callbacks["started"]
|
|
callbacks["func"]()
|
|
assert clipboard["text"] == ""
|
|
|
|
|
|
def test_copy_to_clipboard_does_not_clear_if_changed(monkeypatch):
|
|
clipboard = {"text": ""}
|
|
|
|
def fake_copy(val):
|
|
clipboard["text"] = val
|
|
|
|
def fake_paste():
|
|
return clipboard["text"]
|
|
|
|
callbacks = {}
|
|
|
|
class DummyTimer:
|
|
def __init__(self, delay, func):
|
|
callbacks["func"] = func
|
|
|
|
def start(self):
|
|
pass
|
|
|
|
monkeypatch.setattr(pyperclip, "copy", fake_copy)
|
|
monkeypatch.setattr(pyperclip, "paste", fake_paste)
|
|
monkeypatch.setattr(threading, "Timer", DummyTimer)
|
|
|
|
copy_to_clipboard("secret", 1)
|
|
fake_copy("other")
|
|
callbacks["func"]()
|
|
assert clipboard["text"] == "other"
|