17db96d56Sopenharmony_cifrom test import support
27db96d56Sopenharmony_cifrom test.support import import_helper
37db96d56Sopenharmony_ciimport unittest
47db96d56Sopenharmony_ciimport warnings
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci# Skip test if nis module does not exist.
87db96d56Sopenharmony_ciwith warnings.catch_warnings():
97db96d56Sopenharmony_ci    warnings.simplefilter("ignore", DeprecationWarning)
107db96d56Sopenharmony_ci    nis = import_helper.import_module('nis')
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciclass NisTests(unittest.TestCase):
147db96d56Sopenharmony_ci    def test_maps(self):
157db96d56Sopenharmony_ci        try:
167db96d56Sopenharmony_ci            maps = nis.maps()
177db96d56Sopenharmony_ci        except nis.error as msg:
187db96d56Sopenharmony_ci            # NIS is probably not active, so this test isn't useful
197db96d56Sopenharmony_ci            self.skipTest(str(msg))
207db96d56Sopenharmony_ci        try:
217db96d56Sopenharmony_ci            # On some systems, this map is only accessible to the
227db96d56Sopenharmony_ci            # super user
237db96d56Sopenharmony_ci            maps.remove("passwd.adjunct.byname")
247db96d56Sopenharmony_ci        except ValueError:
257db96d56Sopenharmony_ci            pass
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci        done = 0
287db96d56Sopenharmony_ci        for nismap in maps:
297db96d56Sopenharmony_ci            mapping = nis.cat(nismap)
307db96d56Sopenharmony_ci            for k, v in mapping.items():
317db96d56Sopenharmony_ci                if not k:
327db96d56Sopenharmony_ci                    continue
337db96d56Sopenharmony_ci                if nis.match(k, nismap) != v:
347db96d56Sopenharmony_ci                    self.fail("NIS match failed for key `%s' in map `%s'" % (k, nismap))
357db96d56Sopenharmony_ci                else:
367db96d56Sopenharmony_ci                    # just test the one key, otherwise this test could take a
377db96d56Sopenharmony_ci                    # very long time
387db96d56Sopenharmony_ci                    done = 1
397db96d56Sopenharmony_ci                    break
407db96d56Sopenharmony_ci            if done:
417db96d56Sopenharmony_ci                break
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciif __name__ == '__main__':
447db96d56Sopenharmony_ci    unittest.main()
45