Closed dsifat closed 1 year ago
Thanks for your report. I am unable to reproduce this issue. Can you please provide a full reproduction, including the code you used, the expected outcome, and the observed outcome?
I have also encountered issues related to interval. I have written the following test, which fails, although the interval is set to 120 seconds (greater than tested waiting times):
from time import sleep
import pyotp
import pytest
@pytest.mark.parametrize('wait', (25, 55, 85, 105, 115))
def test_totp(wait: int) -> None:
totp = pyotp.TOTP(pyotp.random_base32(), interval=120)
code = totp.now()
sleep(wait)
assert totp.verify(code)
And here are the results:
============================================ short test summary info =============================================
FAILED test-totp-interval.py::test_totp[55] - AssertionError: assert False
FAILED test-totp-interval.py::test_totp[105] - AssertionError: assert False
FAILED test-totp-interval.py::test_totp[115] - AssertionError: assert False
==================================== 3 failed, 2 passed in 385.04s (0:06:25) =====================================
Testing environment:
@vladimir-poghosyan that is a misunderstanding of how TOTP works. The interval doesn't start when your test starts, it starts when the time since the epoch modulo the interval is zero.
I am going to close this issue now, since neither report has a valid reproduction.
Interval remains 30 seconds in TOTP if we provide more than 30 like 60, 120 or 240