Example #1
0
    def _populate_example_owners(self, c):
        owners = ['freeconet', 'telarena']
        keys = {}
        ownq = 'insert into numbex_owners (name) values (?)'
        keyq = 'insert into numbex_pubkeys (owner, pubkey) values (?, ?)'
        for o in owners:
            c.execute(ownq, [o])
            priv = self._example_privkeys[o]
            dsa = crypto.parse_priv_key(priv)
            pub = crypto.extract_pub_key(dsa)
            f = file(o+'.priv.pem', 'w')
            f.write(priv)
            f.close()
            f = file(o+'.pem', 'w')
            f.write(pub)
            f.close()
            keys[o] = dsa
            c.execute(keyq, [o, pub])

        domains = [['sip.freeconet.pl:1234', 'freeconet'],
                    ['sip.freeconet.pl', 'freeconet'],
                    ['telarena.pl', 'telarena'],
                    ]
        domainq = 'insert into numbex_domains (sip, owner) values (?, ?)'
        for d in domains:
            c.execute(domainq, d)
        self.conn.commit()
        return keys
Example #2
0
    def test_soap(self):
        port = self.port
        pemkeys = database.Database._example_privkeys
        extract_pubkey = lambda x: crypto.extract_pub_key(
                crypto.parse_priv_key(pemkeys[x]))
        keys = dict(freeconet=extract_pubkey('freeconet'),
                telarena=extract_pubkey('telarena'))
        basedatacsv = '''+481234,+481299,sip.freeconet.pl,freeconet,2009-01-03T23:59:30.123456
+4820000,+4820999,sip.freeconet.pl,freeconet,2009-01-03T23:59:30.123456
+4821000,+4821111,sip.freeconet.pl,freeconet,2009-01-08T23:59:30.123456
+4830000,+4830099,sip.freeconet.pl,freeconet,2009-01-08T23:59:30.123456'''
        basedata = utils.parse_csv_data(StringIO(basedatacsv))

        tosend = '''+4821005,+4821011,new.freeconet.pl,freeconet,2009-01-09T20:11:58.312000
+481222,+481240,new.freeconet.pl,freeconet,2009-01-09T20:11:58.312000
+481298,+481301,new.freeconet.pl,freeconet,2009-01-09T20:11:58.312000
+4821113,+4821123,new.freeconet.pl,freeconet,2009-01-09T20:11:58.312000'''
        # no signatures
        self.assertRaises(ZSI.FaultException, send, StringIO(tosend), url=self.url)
        # test overwriting
        send_sign(StringIO(basedatacsv), StringIO(pemkeys['freeconet']), url=self.url)
        result = pull_all(url=self.url)
        parsed = utils.parse_csv_data(StringIO(result))
        for rowe, rowr in zip(basedata, parsed):
            self.assertEqual(rowr[:-1], rowe)
        for row in parsed:
            key = crypto.parse_pub_key(keys[row[3]])
            self.assert_(crypto.check_signature(key, row[5], *row))

        # test updates
        send_sign(StringIO(tosend), StringIO(pemkeys['freeconet']), url=self.url)
        expected = utils.parse_csv_data(StringIO('''+481241,+481297,sip.freeconet.pl,freeconet,2009-01-08T23:59:30.123456
+4821000,+4821004,sip.freeconet.pl,freeconet,2009-01-08T23:59:30.123456
+4821012,+4821111,sip.freeconet.pl,freeconet,2009-01-08T23:59:30.123456'''))
        result = pull_sign(url=self.url)
        parsed = utils.parse_csv_data(StringIO(result))
        for rowe, rowr in zip(expected, parsed):
            self.assertEqual(rowe[:-1], rowr[:-2])