@@ -0,0 +1,184 @@
import unittest , sys , requests , json , uuid
from datetime import datetime
#url = 'http://192.168.99.100/servers/localhost/zones/'
#url = 'http://192.168.99.100/servers/localhost/zones/example.local.'
#url = 'http://192.168.99.100/servers'
SERVER = 'pdns.tempo.com.br:8080'
HEADERS = {'X-API-Key' :'changeme' }
def idt (r ):
print json .dumps (r , indent = 2 ),
class ClientTestCase (unittest .TestCase ):
def create_new_domain (self ):
""" Create a new domain with the proper nameservers and SOA records
"""
url = 'http://%s/servers/localhost/zones' % SERVER
serial = datetime .now ().strftime ('%Y%m%d' )
new_domain_data = {
'name' : 'temponetworks.com.br' ,
'kind' : 'native' ,
'masters' : [],
'nameservers' : ['ns1.temponetworks.com.br' , 'ns2.temponetworks.com.br' ],
'records' : [
{
'content' : 'ns1.temponetworks.com.br hostmaster.temponetworks.com.br %s01 10800 7200 604800 86400' % serial ,
'name' : 'temponetworks.com.br' ,
'ttl' : 300 ,
'type' : 'SOA' ,
'disabled' : False
}
]
}
del_url = 'http://%s/servers/localhost/zones/temponetworks.com.br.' % SERVER
r = requests .delete (del_url , headers = HEADERS )
#idt(r.json()),
print r .text , r .status_code
r = requests .post (url , data = json .dumps (new_domain_data ), headers = HEADERS )
print json .dumps (r .json (), indent = 2 ), r .status_code
def create_new_A_record (self ):
""" Create/Update a new A record
"""
url = 'http://%s/servers/localhost/zones/temponetworks.com.br' % SERVER
new_rrsets = {
'rrsets' : [
{
'name' : 'temponetworks.com.br' ,
'type' : 'A' ,
'changetype' : 'REPLACE' ,
'records' : [
{
'content' : '52.20.203.229' ,
'name' : 'temponetworks.com.br' ,
'ttl' : 300 ,
'type' : 'A' ,
'disabled' : False ,
'priority' : 0
}
]
},
]
}
r = requests .patch (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print json .dumps (r .json (), indent = 2 ), r .status_code
new_rrsets ['rrsets' ][0 ]['name' ] = 'ns1.temponetworks.com.br'
new_rrsets ['rrsets' ][0 ]['records' ][0 ]['name' ] = 'ns1.temponetworks.com.br'
r = requests .patch (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print json .dumps (r .json (), indent = 2 ), r .status_code
new_rrsets ['rrsets' ][0 ]['name' ] = 'ns2.temponetworks.com.br'
new_rrsets ['rrsets' ][0 ]['records' ][0 ]['name' ] = 'ns2.temponetworks.com.br'
r = requests .patch (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print json .dumps (r .json (), indent = 2 ), r .status_code
def create_new_MX_record (self ):
""" Create/Update two MX records
"""
url = 'http://%s/servers/localhost/zones/inova.net' % SERVER
new_rrsets = {
'rrsets' : [
{
'name' : 'temponetworks.com.br' ,
'type' : 'MX' ,
'changetype' : 'REPLACE' ,
'records' : [
{
'content' : '10 mxlite.u.inova.com.br' ,
'name' : 'inova.net' ,
'ttl' : 3600 ,
'type' : 'MX' ,
'disabled' : False ,
},
{
'content' : '20 mxcorp.u.inova.com.br' ,
'name' : 'inova.net' ,
'ttl' : 3600 ,
'type' : 'MX' ,
'disabled' : False ,
}
]
},
]
}
r = requests .patch (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print r .text , r .status_code
def create_new_NS_records (self ):
url = 'http://%s/servers/localhost/zones/temponetworks.com.br' % SERVER
new_rrsets = {
'rrsets' : [
{
'name' : 'temponetworks.com.br' ,
'type' : 'NS' ,
'changetype' : 'REPLACE' ,
'records' : [
{
'content' : 'ns1.temponetworks.com.br' ,
'name' : 'temponetworks.com.br' ,
'ttl' : 300 ,
'type' : 'NS' ,
'disabled' : False
},
{
'content' : 'ns2.temponetworks.com.br' ,
'name' : 'temponetworks.com.br' ,
'ttl' : 300 ,
'type' : 'NS' ,
'disabled' : False
}
]
},
]
}
r = requests .patch (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print r .text , r .status_code
def create_new_CNAME_record (self ):
url = 'http://%s/servers/localhost/zones/inova.net' % SERVER
new_rrsets = {
'rrsets' : [
{
'name' : 'www.temponetworks.com.br' ,
'type' : 'CNAME' ,
'changetype' : 'REPLACE' ,
'records' : [
{
'content' : 'temponetworks.com.br' ,
'name' : 'www.temponetworks.com.br' ,
'ttl' : 300 ,
'type' : 'CNAME' ,
'disabled' : False
}
]
},
]
}
r = requests .post (url , data = json .dumps (new_rrsets ), headers = HEADERS )
print r .text , r .status_code
if __name__ == '__main__' :
suite = unittest .TestSuite ()
suite .addTest (ClientTestCase ('create_new_domain' ))
suite .addTest (ClientTestCase ('create_new_A_record' ))
#suite.addTest(ClientTestCase('create_new_MX_record'))
suite .addTest (ClientTestCase ('create_new_NS_records' ))
suite .addTest (ClientTestCase ('create_new_CNAME_record' ))
#suite.addTest(ClientTestCase('test_domain_crud_operations'))
#suite.addTest(ClientTestCase('test_zdomain_report_crud_operations'))
#suite.addTest(ClientTestCase('test_zdomain_reports_crud_operations'))
unittest .TextTestRunner ().run (suite )