def testYumDetectUnsupportedTransport(self): artifact = "YumSources" parser = config_file.YumPackageSourceParser() sources = { "/etc/yum.repos.d/noproblems.repo": r""" # comment 1 [centosdvdiso] name=CentOS DVD ISO baseurl=https://mirror1.centos.org/CentOS/6/os/i386/ enabled=1 gpgcheck=1 gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6 # comment2 [examplerepo] name=Example Repository baseurl = https://mirror3.centos.org/CentOS/6/os/i386/ enabled=1 gpgcheck=1 gpgkey=http://mirror.centos.org/CentOS/6/os/i386/RPM-GPG-KEY """, "/etc/yum.repos.d/test.repo": r""" [centosdvdiso] name=CentOS DVD ISO baseurl=file:///mnt/ https://mirror1.centos.org/CentOS/6/os/i386/ """, "/etc/yum.repos.d/test2.repo": r""" [centosdvdiso] name=CentOS DVD ISO baseurl=http://mirror1.centos.org/CentOS/6/os/i386/ """, "/etc/yum.repos.d/file-test.repo": r""" [centosdvdiso] name=CentOS DVD ISO baseurl=file:///mnt/ """ } chk_id = "CIS-PKG-SOURCE-UNSUPPORTED-TRANSPORT" exp = "Found: Yum sources use unsupported transport." found = [ "/etc/yum.repos.d/test.repo: transport: file,https", "/etc/yum.repos.d/test2.repo: transport: http", "/etc/yum.repos.d/file-test.repo: transport: file" ] results = self.GenResults([artifact], [sources], [parser]) self.assertCheckDetectedAnom(chk_id, results, exp, found)
def testPackageSourceData(self): test_data = r""" # comment 1 [centosdvdiso] name=CentOS DVD ISO baseurl=file:///mnt http://mirror1.centos.org/CentOS/6/os/i386/ baseurl =ssh://mirror2.centos.org/CentOS/6/os/i386/ enabled=1 gpgcheck=1 gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6 # comment2 [examplerepo] name=Example Repository baseurl = https://mirror3.centos.org/CentOS/6/os/i386/ enabled=1 gpgcheck=1 gpgkey=http://mirror.centos.org/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6 """ file_obj = StringIO.StringIO(test_data) pathspec = rdf_paths.PathSpec(path="/etc/yum.repos.d/test1.repo") stat = rdf_client.StatEntry(pathspec=pathspec) parser = config_file.YumPackageSourceParser() results = list(parser.Parse(stat, file_obj, None)) result = [ d for d in results if isinstance(d, rdf_protodict.AttributedDict) ][0] self.assertEqual("/etc/yum.repos.d/test1.repo", result.filename) self.assertEqual(4, len(result.uris)) self.assertEqual("file", result.uris[0].transport) self.assertEqual("", result.uris[0].host) self.assertEqual("/mnt", result.uris[0].path) self.assertEqual("http", result.uris[1].transport) self.assertEqual("mirror1.centos.org", result.uris[1].host) self.assertEqual("/CentOS/6/os/i386/", result.uris[1].path) self.assertEqual("ssh", result.uris[2].transport) self.assertEqual("mirror2.centos.org", result.uris[2].host) self.assertEqual("/CentOS/6/os/i386/", result.uris[2].path) self.assertEqual("https", result.uris[3].transport) self.assertEqual("mirror3.centos.org", result.uris[3].host) self.assertEqual("/CentOS/6/os/i386/", result.uris[3].path)
def testEmptySourceData(self): test_data = ("# comment 1\n" "baseurl=\n" "# Trailing whitespace on purpose\n" "baseurl= \n" "# Trailing whitespace on purpose\n" "baseurl = \n" "baseurl\n" "# comment 2\n") file_obj = StringIO.StringIO(test_data) pathspec = rdf_paths.PathSpec(path="/etc/yum.repos.d/emptytest.repo") stat = rdf_client.StatEntry(pathspec=pathspec) parser = config_file.YumPackageSourceParser() results = list(parser.Parse(stat, file_obj, None)) result = [d for d in results if isinstance(d, rdf_protodict.AttributedDict)][0] self.assertEqual("/etc/yum.repos.d/emptytest.repo", result.filename) self.assertEqual(0, len(result.uris))