annotate test/test_init.py @ 5717:cad18de2b988

issue2550949: Rate limit password guesses/login attempts. Generic rate limit mechanism added. Deployed for web page logins. Default is 3 login attempts/minute for a user. After which one login attempt every 20 seconds can be done. Uses gcra algorithm so all I need to store is a username and timestamp in the one time key database. This does mean I don't have a list of all failed login attempts as part of the rate limiter. Set up config setting as well so admin can tune the rate. Maybe 1 every 10 seconds is ok at a site with poor typists who need 6 attempts to get the password right 8-). The gcra method can also be used to limit the rest and xmlrpc interfaces if needed. The mechanism I added also supplies a status method that calculates the expected values for http headers returned as part of rate limiting. Also tests added to test all code paths I hope.
author John Rouillard <rouilj@ieee.org>
date Sat, 11 May 2019 17:24:58 -0400
parents 198b6e810c67
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5248
198b6e810c67 Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents: 5037
diff changeset
1 #-*- encoding: utf-8 -*-
4816
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
2
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
3 import unittest, os, pprint, difflib, textwrap
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
4
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
5 from roundup.init import loadTemplateInfo
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
6
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
7
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
8 class TemplateInfoTestCase(unittest.TestCase):
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
9 def testLoadTemplateInfo(self):
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
10 path = os.path.join(os.path.dirname(__file__),
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
11 '../share/roundup/templates/classic')
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
12 self.maxDiff = None
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
13 self.assertEqual(
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
14 loadTemplateInfo(path),
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
15 {
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
16 'description': textwrap.dedent('''\
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
17 This is a generic issue tracker that may be used to track bugs,
4818
edb171528a7d init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents: 4816
diff changeset
18 feature requests, project issues or any number of other types
edb171528a7d init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents: 4816
diff changeset
19 of issues. Most users of Roundup will find that this template
edb171528a7d init.loadTemplateInfo: replace rfc822 with email.parser (Python 3 compatible)
anatoly techtonik <techtonik@gmail.com>
parents: 4816
diff changeset
20 suits them, with perhaps a few customisations.'''),
4816
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
21 'intended-for': 'All first-time Roundup users',
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
22 'name': 'classic',
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
23 'path': path
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
24 }
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
25 )
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
26
9b3e09a50d85 init.loadTemplateInfo: Add test
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
27 # vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/