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
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])