| Features common to HTTPPasswordMgr and HTTPProxyPasswordMgr |
| =========================================================== |
| |
| (mgr_class gets here through globs argument) |
| |
| >>> mgr = mgr_class() |
| >>> add = mgr.add_password |
| |
| >>> add("Some Realm", "http://example.com/", "joe", "password") |
| >>> add("Some Realm", "http://example.com/ni", "ni", "ni") |
| >>> add("c", "http://example.com/foo", "foo", "ni") |
| >>> add("c", "http://example.com/bar", "bar", "nini") |
| >>> add("b", "http://example.com/", "first", "blah") |
| >>> add("b", "http://example.com/", "second", "spam") |
| >>> add("a", "http://example.com", "1", "a") |
| >>> add("Some Realm", "http://c.example.com:3128", "3", "c") |
| >>> add("Some Realm", "d.example.com", "4", "d") |
| >>> add("Some Realm", "e.example.com:3128", "5", "e") |
| |
| >>> mgr.find_user_password("Some Realm", "example.com") |
| ('joe', 'password') |
| >>> mgr.find_user_password("Some Realm", "http://example.com") |
| ('joe', 'password') |
| >>> mgr.find_user_password("Some Realm", "http://example.com/") |
| ('joe', 'password') |
| >>> mgr.find_user_password("Some Realm", "http://example.com/spam") |
| ('joe', 'password') |
| >>> mgr.find_user_password("Some Realm", "http://example.com/spam/spam") |
| ('joe', 'password') |
| >>> mgr.find_user_password("c", "http://example.com/foo") |
| ('foo', 'ni') |
| >>> mgr.find_user_password("c", "http://example.com/bar") |
| ('bar', 'nini') |
| |
| Actually, this is really undefined ATM |
| #Currently, we use the highest-level path where more than one match: |
| # |
| #>>> mgr.find_user_password("Some Realm", "http://example.com/ni") |
| #('joe', 'password') |
| |
| Use latest add_password() in case of conflict: |
| |
| >>> mgr.find_user_password("b", "http://example.com/") |
| ('second', 'spam') |
| |
| No special relationship between a.example.com and example.com: |
| |
| >>> mgr.find_user_password("a", "http://example.com/") |
| ('1', 'a') |
| >>> mgr.find_user_password("a", "http://a.example.com/") |
| (None, None) |
| |
| Ports: |
| |
| >>> mgr.find_user_password("Some Realm", "c.example.com") |
| (None, None) |
| >>> mgr.find_user_password("Some Realm", "c.example.com:3128") |
| ('3', 'c') |
| >>> mgr.find_user_password("Some Realm", "http://c.example.com:3128") |
| ('3', 'c') |
| >>> mgr.find_user_password("Some Realm", "d.example.com") |
| ('4', 'd') |
| >>> mgr.find_user_password("Some Realm", "e.example.com:3128") |
| ('5', 'e') |
| |
| |
| Default port tests |
| ------------------ |
| |
| >>> mgr = mgr_class() |
| >>> add = mgr.add_password |
| |
| The point to note here is that we can't guess the default port if there's |
| no scheme. This applies to both add_password and find_user_password. |
| |
| >>> add("f", "http://g.example.com:80", "10", "j") |
| >>> add("g", "http://h.example.com", "11", "k") |
| >>> add("h", "i.example.com:80", "12", "l") |
| >>> add("i", "j.example.com", "13", "m") |
| >>> mgr.find_user_password("f", "g.example.com:100") |
| (None, None) |
| >>> mgr.find_user_password("f", "g.example.com:80") |
| ('10', 'j') |
| >>> mgr.find_user_password("f", "g.example.com") |
| (None, None) |
| >>> mgr.find_user_password("f", "http://g.example.com:100") |
| (None, None) |
| >>> mgr.find_user_password("f", "http://g.example.com:80") |
| ('10', 'j') |
| >>> mgr.find_user_password("f", "http://g.example.com") |
| ('10', 'j') |
| >>> mgr.find_user_password("g", "h.example.com") |
| ('11', 'k') |
| >>> mgr.find_user_password("g", "h.example.com:80") |
| ('11', 'k') |
| >>> mgr.find_user_password("g", "http://h.example.com:80") |
| ('11', 'k') |
| >>> mgr.find_user_password("h", "i.example.com") |
| (None, None) |
| >>> mgr.find_user_password("h", "i.example.com:80") |
| ('12', 'l') |
| >>> mgr.find_user_password("h", "http://i.example.com:80") |
| ('12', 'l') |
| >>> mgr.find_user_password("i", "j.example.com") |
| ('13', 'm') |
| >>> mgr.find_user_password("i", "j.example.com:80") |
| (None, None) |
| >>> mgr.find_user_password("i", "http://j.example.com") |
| ('13', 'm') |
| >>> mgr.find_user_password("i", "http://j.example.com:80") |
| (None, None) |
| |
| |
| Features specific to HTTPProxyPasswordMgr |
| ========================================= |
| |
| Default realm: |
| |
| >>> mgr = mechanize.HTTPProxyPasswordMgr() |
| >>> add = mgr.add_password |
| |
| >>> mgr.find_user_password("d", "f.example.com") |
| (None, None) |
| >>> add(None, "f.example.com", "6", "f") |
| >>> mgr.find_user_password("d", "f.example.com") |
| ('6', 'f') |
| |
| Default host/port: |
| |
| >>> mgr.find_user_password("e", "g.example.com") |
| (None, None) |
| >>> add("e", None, "7", "g") |
| >>> mgr.find_user_password("e", "g.example.com") |
| ('7', 'g') |
| |
| Default realm and host/port: |
| |
| >>> mgr.find_user_password("f", "h.example.com") |
| (None, None) |
| >>> add(None, None, "8", "h") |
| >>> mgr.find_user_password("f", "h.example.com") |
| ('8', 'h') |
| |
| Default realm beats default host/port: |
| |
| >>> add("d", None, "9", "i") |
| >>> mgr.find_user_password("d", "f.example.com") |
| ('6', 'f') |