xref: /third_party/python/Lib/test/test_nis.py (revision 7db96d56)
1from test import support
2from test.support import import_helper
3import unittest
4import warnings
5
6
7# Skip test if nis module does not exist.
8with warnings.catch_warnings():
9    warnings.simplefilter("ignore", DeprecationWarning)
10    nis = import_helper.import_module('nis')
11
12
13class NisTests(unittest.TestCase):
14    def test_maps(self):
15        try:
16            maps = nis.maps()
17        except nis.error as msg:
18            # NIS is probably not active, so this test isn't useful
19            self.skipTest(str(msg))
20        try:
21            # On some systems, this map is only accessible to the
22            # super user
23            maps.remove("passwd.adjunct.byname")
24        except ValueError:
25            pass
26
27        done = 0
28        for nismap in maps:
29            mapping = nis.cat(nismap)
30            for k, v in mapping.items():
31                if not k:
32                    continue
33                if nis.match(k, nismap) != v:
34                    self.fail("NIS match failed for key `%s' in map `%s'" % (k, nismap))
35                else:
36                    # just test the one key, otherwise this test could take a
37                    # very long time
38                    done = 1
39                    break
40            if done:
41                break
42
43if __name__ == '__main__':
44    unittest.main()
45