Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 1 | |
Jason Tishler | 0fd54d8 | 2003-08-11 12:13:14 +0000 | [diff] [blame] | 2 | import netrc, os, unittest, sys |
Barry Warsaw | 04f357c | 2002-07-23 19:04:11 +0000 | [diff] [blame] | 3 | from test import test_support |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 4 | |
| 5 | TEST_NETRC = """ |
| 6 | machine foo login log1 password pass1 account acct1 |
| 7 | |
| 8 | macdef macro1 |
| 9 | line1 |
| 10 | line2 |
| 11 | |
| 12 | macdef macro2 |
| 13 | line3 |
| 14 | line4 |
| 15 | |
Tim Peters | 863ac44 | 2002-04-16 01:38:40 +0000 | [diff] [blame] | 16 | default login log2 password pass2 |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 17 | |
| 18 | """ |
| 19 | |
Guido van Rossum | 3b0a329 | 2002-08-09 16:38:32 +0000 | [diff] [blame] | 20 | temp_filename = test_support.TESTFN |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 21 | |
| 22 | class NetrcTestCase(unittest.TestCase): |
| 23 | |
| 24 | def setUp (self): |
Jason Tishler | 0fd54d8 | 2003-08-11 12:13:14 +0000 | [diff] [blame] | 25 | mode = 'w' |
| 26 | if sys.platform not in ['cygwin']: |
| 27 | mode += 't' |
| 28 | fp = open(temp_filename, mode) |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 29 | fp.write(TEST_NETRC) |
| 30 | fp.close() |
| 31 | self.netrc = netrc.netrc(temp_filename) |
Tim Peters | 863ac44 | 2002-04-16 01:38:40 +0000 | [diff] [blame] | 32 | |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 33 | def tearDown (self): |
| 34 | del self.netrc |
R David Murray | 4189b67 | 2013-09-16 13:48:44 -0400 | [diff] [blame^] | 35 | test_support.unlink(temp_filename) |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 36 | |
| 37 | def test_case_1(self): |
| 38 | self.assert_(self.netrc.macros == {'macro1':['line1\n', 'line2\n'], |
| 39 | 'macro2':['line3\n', 'line4\n']} |
| 40 | ) |
| 41 | self.assert_(self.netrc.hosts['foo'] == ('log1', 'acct1', 'pass1')) |
| 42 | self.assert_(self.netrc.hosts['default'] == ('log2', None, 'pass2')) |
Tim Peters | 863ac44 | 2002-04-16 01:38:40 +0000 | [diff] [blame] | 43 | |
R David Murray | 4189b67 | 2013-09-16 13:48:44 -0400 | [diff] [blame^] | 44 | if os.name == 'posix': |
| 45 | def test_security(self): |
| 46 | # This test is incomplete since we are normally not run as root and |
| 47 | # therefore can't test the file ownership being wrong. |
| 48 | os.unlink(temp_filename) |
| 49 | d = test_support.TESTFN |
| 50 | try: |
| 51 | os.mkdir(d) |
| 52 | fn = os.path.join(d, '.netrc') |
| 53 | with open(fn, 'wt') as f: |
| 54 | f.write(TEST_NETRC) |
| 55 | with test_support.EnvironmentVarGuard() as environ: |
| 56 | environ.set('HOME', d) |
| 57 | os.chmod(fn, 0600) |
| 58 | self.netrc = netrc.netrc() |
| 59 | self.test_case_1() |
| 60 | os.chmod(fn, 0622) |
| 61 | self.assertRaises(netrc.NetrcParseError, netrc.netrc) |
| 62 | finally: |
| 63 | test_support.rmtree(d) |
| 64 | |
Neal Norwitz | 996acf1 | 2003-02-17 14:51:41 +0000 | [diff] [blame] | 65 | def test_main(): |
| 66 | test_support.run_unittest(NetrcTestCase) |
Tim Peters | 863ac44 | 2002-04-16 01:38:40 +0000 | [diff] [blame] | 67 | |
Andrew M. Kuchling | 76fffd8 | 2002-03-22 02:48:57 +0000 | [diff] [blame] | 68 | if __name__ == "__main__": |
Neal Norwitz | 996acf1 | 2003-02-17 14:51:41 +0000 | [diff] [blame] | 69 | test_main() |