1 |
1 |
# -*- coding: utf-8 -*-
|
2 |
2 |
|
|
3 |
import random
|
3 |
4 |
import datetime
|
4 |
5 |
import pytest
|
|
6 |
import string
|
5 |
7 |
|
6 |
8 |
from quixote import cleanup
|
7 |
9 |
from qommon.template import Template, TemplateError
|
... | ... | |
432 |
434 |
assert tmpl.render({'value': 'not a number'}) == '0'
|
433 |
435 |
assert tmpl.render({'value': ''}) == '0'
|
434 |
436 |
assert tmpl.render({'value': None}) == '0'
|
|
437 |
|
|
438 |
|
|
439 |
def test_token_decimal():
|
|
440 |
tokens = [Template('{% token_decimal 4 %}').render() for i in range(100)]
|
|
441 |
assert all(len(token) == 4 for token in tokens)
|
|
442 |
assert all(token.isdigit() for token in tokens)
|
|
443 |
# check randomness, i.e. duplicates are rare
|
|
444 |
assert len(set(tokens)) > 70
|
|
445 |
|
|
446 |
|
|
447 |
def test_token_alphanum():
|
|
448 |
tokens = [Template('{% token_alphanum 4 %}').render() for i in range(100)]
|
|
449 |
assert all(len(token) == 4 for token in tokens)
|
|
450 |
assert all(token.upper() == token for token in tokens)
|
|
451 |
assert all(token.isalnum() for token in tokens)
|
|
452 |
# check randomness, i.e. duplicates are rare
|
|
453 |
assert len(set(tokens)) > 90
|
|
454 |
# check there are letters and digits
|
|
455 |
assert any(set(token) & set(string.ascii_uppercase) for token in tokens)
|
|
456 |
assert any(set(token) & set(string.digits) for token in tokens)
|
|
457 |
# no look-alike characters
|
|
458 |
assert not any(set(token) & set('01IiOo') for token in tokens)
|
|
459 |
|
|
460 |
|
|
461 |
def test_token_alphanum_with_seed():
|
|
462 |
tokens1 = [Template('{% token_alphanum 4 seed1 seed2 %}').render({'seed1': i, 'seed2': i + 1}) for i in range(100)]
|
|
463 |
tokens2 = [Template('{% token_alphanum 4 seed1 seed2 %}').render({'seed1': i, 'seed2': i + 1}) for i in range(100)]
|
|
464 |
assert all(len(token) == 4 for token in tokens1)
|
|
465 |
assert all(token.upper() == token for token in tokens1)
|
|
466 |
assert all(token.isalnum() for token in tokens1)
|
|
467 |
assert all(len(token) == 4 for token in tokens2)
|
|
468 |
assert all(token.upper() == token for token in tokens2)
|
|
469 |
assert all(token.isalnum() for token in tokens2)
|
|
470 |
assert tokens1 == tokens2
|
|
471 |
# token_check is case insensitive
|
|
472 |
t = Template('{% if token1|token_check:token2 %}ok{% endif %}')
|
|
473 |
for token1, token2 in zip(tokens1, tokens2):
|
|
474 |
assert t.render({'token1': token1 + ' ', 'token2': token2.lower()}) == 'ok'
|