| Total Complexity | 5 |
| Total Lines | 37 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | import re |
||
| 2 | import unittest |
||
| 3 | |||
| 4 | from src.app import USERNAME_PATTERN, PASSWORD_PATTERN |
||
| 5 | |||
| 6 | |||
| 7 | class RegexTestCase(unittest.TestCase): |
||
| 8 | |||
| 9 | def test_user_regex(self): |
||
| 10 | self.validate( |
||
| 11 | pattern=USERNAME_PATTERN, |
||
| 12 | valides=['alex', 'hello_world', 'Lorem-Ipsum', 'Frank123'], |
||
| 13 | invalids=['abc', 'an_user!', 'hello world'] |
||
| 14 | ) |
||
| 15 | |||
| 16 | def test_password_regex(self): |
||
| 17 | self.validate( |
||
| 18 | pattern=PASSWORD_PATTERN, |
||
| 19 | valides=['8dlk9dA32%'], |
||
| 20 | invalids=[ |
||
| 21 | 'this is a way too long password to be validated !', |
||
| 22 | 'lettersOnly', '1235689', 'less_8', 'letter and space', |
||
| 23 | 'letters123', 'no uppercase letters 123' |
||
| 24 | ] |
||
| 25 | ) |
||
| 26 | |||
| 27 | def validate(self, pattern, valides, invalids): |
||
| 28 | for valid in valides: |
||
| 29 | self.assertIsNotNone(re.match(pattern, valid)) |
||
| 30 | |||
| 31 | for invalid in invalids: |
||
| 32 | self.assertIsNone(re.match(pattern, invalid)) |
||
| 33 | |||
| 34 | |||
| 35 | if __name__ == '__main__': |
||
| 36 | unittest.main() |
||
| 37 |