Пример #1
0
class SLTest(unittest.TestCase):

    """
    Store the serverlist in this directory.
    """
    def setUp(self):
        #print "setUp"
        self.sl = ServerList(tempfile.gettempdir(), "serverlisttest.xml")
        #self.sl.__configFile = os.path.join(self.sl._configPrefix, "serverlist.xml")

    def tearDown(self):
        pass


    """
    Writes a serverlist in the current format to disk.
    """
    def writeList(self):
        #print "writeList"
        try:
            f = open(self.sl.getConfigFilePath(), "w")
            f.write("""
<!DOCTYPE LumaServerFile>
<LumaServerList version="1.2">
 <LumaLdapServer port="1337" clientCertFile="" followAliases="0" clientCertKeyfile="" bindPassword="******" useCertificate="0" bindDN="" host="directory.d-trust.de" authMethod="1" bindAnon="1" encryptionMethod="0" name="d-trust" autoBase="0" checkServerCertificate="1">
  <baseDNs>
   <base dn="dc=d-trust,dc=de"/>
   <base dn="dc=ntnu,dc=no.TULL"/>
  </baseDNs>
 </LumaLdapServer>
 <LumaLdapServer port="389" clientCertFile="" followAliases="0" clientCertKeyfile="" bindPassword="******" useCertificate="0" bindDN="" host="at.ntnu.no" authMethod="6" bindAnon="1" encryptionMethod="2" name="ntnu" autoBase="1" checkServerCertificate="2">
  <baseDNs>
   <base dn="dc=lol,dc=com"/>
   <base dn="dc=ntnu,dc=no"/>
  </baseDNs>
 </LumaLdapServer>
 <LumaLdapServer port="392" clientCertFile="" followAliases="1" clientCertKeyfile="" bindPassword="******" useCertificate="0" bindDN="" host="x500.bund.de" authMethod="0" bindAnon="1" encryptionMethod="1" name="bund" autoBase="0" checkServerCertificate="0">
  <baseDNs>
   <base dn="dc=bund,dc=de"/>
  </baseDNs>
 </LumaLdapServer>
</LumaServerList>
        """)
            f.close()
        except IOError:
            print "----------------------"
            print "WRITE TO DISK FAILED!"
            print "----------------------"
            raise

    def getEmptyServerObject(self):
        #print "getEmptryServerObject"
        return ServerObject()

    """
    Read and write and emtpy serverlist to/from disk.
    """
    def testEmptyList(self):
        #print "testEmptyList"
        self.sl.setTable([])
        self.sl.writeServerList()
        self.sl.readServerList()
        self.assertEqual(self.sl.getTable(), [])

    """
    Tests for Read, delete, add and write, better than one BIG test, but each test is still a bit to dependent on the previous tests
    """

    def testAdd(self):
        #print "testAdd"
        # Remove and add back the removed item
        self.sl.addServer(self.getEmptyServerObject())

        # Check if it has been added correctly
        self.assertNotEqual(None, self.sl.getServerObject(""))


    def testDelete(self):
        #print "testDelete"
        # Delete and see if object still in list
        self.sl.setTable([self.getEmptyServerObject()])
        self.assertNotEqual(None, self.sl.getServerObject(""))
        self.sl.deleteServer("")
        self.assertEqual(None, self.sl.getServerObject(""))


    def testRead(self):
        #print "testRead"
        # Write the list to disk and have ServerList read it.
        self.writeList()
        self._modifyTime = None #IMPORTANT - FORCES READ FROM DISK
        self.sl.readServerList()

        # Check that the server list was read correctly
        self.assertNotEqual(None, self.sl.getServerObject("d-trust"))
        self.assertNotEqual(None, self.sl.getServerObject("bund"))
        self.assertNotEqual(None, self.sl.getServerObject("ntnu"))

    def testWrite(self):
        #print "testWrite"
        # Write the list back to disk and read it back
        self.sl.setTable([self.getEmptyServerObject()])
        self.sl.writeServerList()


        f = open(self.sl.getConfigFilePath(), "r")
        s = """
<!DOCTYPE LumaServerFile>
<LumaServerList version="1.2">
 <LumaLdapServer port="389" clientCertFile="" followAliases="0" bindPassword="" useCertificate="0" clientCertKeyFile="" bindDN="" host="" authMethod="0" bindAnon="1" encryptionMethod="0" name="" autoBase="1" checkServerCertificate="0">
  <baseDNs/>
 </LumaLdapServer>
</LumaServerList>
    """
        #Verify the list is good
        read = f.read()
        f.close()
        s = s.strip()
        r = read.strip()
        self.assertEqual(s, r)