Changeset 2171

Show
Ignore:
Timestamp:
04/10/07 22:28:33 (2 years ago)
Author:
mgood
Message:

AccountManagerPlugin:

fix bug in r2120 with checking htdigest passwords (fixes #1410)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • accountmanagerplugin/0.10/acct_mgr/htfile.py

    r2128 r2171  
    6363        if not os.path.exists(filename): 
    6464            return False 
    65         prefix = self.prefix(user.encode('utf-8')
     65        user = user.encode('utf-8'
    6666        password = password.encode('utf-8') 
     67        prefix = self.prefix(user) 
    6768        fd = file(filename) 
    6869        try: 
    6970            for line in fd: 
    7071                if line.startswith(prefix): 
    71                     return self._check_userline(password, prefix
     72                    return self._check_userline(user, password
    7273                                                line[len(prefix):].rstrip('\n')) 
    7374        finally: 
     
    135136        return self.prefix(user) + htpasswd(password) 
    136137 
    137     def _check_userline(self, password, prefix, suffix): 
     138    def _check_userline(self, user, password, suffix): 
    138139        return suffix == htpasswd(password, suffix) 
    139140 
     
    173174        return self.prefix(user) + htdigest(user, self.realm, password) 
    174175 
    175     def _check_userline(self, password, prefix, suffix): 
     176    def _check_userline(self, user, password, suffix): 
    176177        return suffix == htdigest(user, self.realm, password) 
    177178 
  • accountmanagerplugin/0.10/acct_mgr/tests/htfile.py

    r2128 r2171  
    4141        return filename 
    4242 
     43    def _do_password_test(self, filename, content): 
     44        filename = self._create_file(filename, content=content) 
     45        self.env.config.set('account-manager', 'password_file', filename) 
     46        self.assertTrue(self.store.check_password('user', 'password')) 
     47 
    4348 
    4449class HtDigestTestCase(_BaseTestCase): 
     
    4954        self.env.config.set('account-manager', 'htdigest_realm', 
    5055                            'TestRealm') 
     56        self.store = HtDigestStore(self.env) 
    5157 
    5258    def test_userline(self): 
    53         store = HtDigestStore(self.env) 
    54         self.assertEqual(store.userline('user', 'password'), 
     59        self.assertEqual(self.store.userline('user', 'password'), 
    5560                         'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') 
     61 
     62    def test_file(self): 
     63        self._do_password_test('test_file',  
     64                               'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') 
    5665 
    5766class HtPasswdTestCase(_BaseTestCase): 
     
    6069        self.env.config.set('account-manager', 'password_store', 
    6170                            'HtPasswdStore') 
     71        self.store = HtPasswdStore(self.env) 
    6272 
    6373    def test_md5(self): 
     
    7686                               'user:$apr1$xW/09...$fb150dT95SoL1HwXtHS/I0') 
    7787 
    78     def _do_password_test(self, filename, content): 
    79         store = HtPasswdStore(self.env) 
    80         filename = self._create_file(filename, content=content) 
    81         self.env.config.set('account-manager', 'password_file', filename) 
    82         self.assertTrue(store.check_password('user', 'password')) 
    83  
    8488 
    8589def suite(): 
  • accountmanagerplugin/trunk/acct_mgr/htfile.py

    r2128 r2171  
    5454        if not os.path.exists(filename): 
    5555            return False 
    56         prefix = self.prefix(user.encode('utf-8')
     56        user = user.encode('utf-8'
    5757        password = password.encode('utf-8') 
     58        prefix = self.prefix(user) 
    5859        fd = file(filename) 
    5960        try: 
    6061            for line in fd: 
    6162                if line.startswith(prefix): 
    62                     return self._check_userline(password, prefix
     63                    return self._check_userline(user, password
    6364                                                line[len(prefix):].rstrip('\n')) 
    6465        finally: 
     
    126127        return self.prefix(user) + htpasswd(password) 
    127128 
    128     def _check_userline(self, password, prefix, suffix): 
     129    def _check_userline(self, user, password, suffix): 
    129130        return suffix == htpasswd(password, suffix) 
    130131 
     
    164165        return self.prefix(user) + htdigest(user, self.realm, password) 
    165166 
    166     def _check_userline(self, password, prefix, suffix): 
     167    def _check_userline(self, user, password, suffix): 
    167168        return suffix == htdigest(user, self.realm, password) 
    168169 
  • accountmanagerplugin/trunk/acct_mgr/tests/htfile.py

    r2128 r2171  
    4141        return filename 
    4242 
     43    def _do_password_test(self, filename, content): 
     44        filename = self._create_file(filename, content=content) 
     45        self.env.config.set('account-manager', 'password_file', filename) 
     46        self.assertTrue(self.store.check_password('user', 'password')) 
     47 
    4348 
    4449class HtDigestTestCase(_BaseTestCase): 
     
    4954        self.env.config.set('account-manager', 'htdigest_realm', 
    5055                            'TestRealm') 
     56        self.store = HtDigestStore(self.env) 
    5157 
    5258    def test_userline(self): 
    53         store = HtDigestStore(self.env) 
    54         self.assertEqual(store.userline('user', 'password'), 
     59        self.assertEqual(self.store.userline('user', 'password'), 
    5560                         'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') 
     61 
     62    def test_file(self): 
     63        self._do_password_test('test_file',  
     64                               'user:TestRealm:752b304cc7cf011d69ee9b79e2cd0866') 
    5665 
    5766class HtPasswdTestCase(_BaseTestCase): 
     
    6069        self.env.config.set('account-manager', 'password_store', 
    6170                            'HtPasswdStore') 
     71        self.store = HtPasswdStore(self.env) 
    6272 
    6373    def test_md5(self): 
     
    7686                               'user:$apr1$xW/09...$fb150dT95SoL1HwXtHS/I0') 
    7787 
    78     def _do_password_test(self, filename, content): 
    79         store = HtPasswdStore(self.env) 
    80         filename = self._create_file(filename, content=content) 
    81         self.env.config.set('account-manager', 'password_file', filename) 
    82         self.assertTrue(store.check_password('user', 'password')) 
    83  
    8488 
    8589def suite():