1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import random
- import string
- from httpretty import httpretty
- from api import settings
- from desecapi.models import Domain, User, Token
- class utils(object):
- @classmethod
- def generateRandomIPv4Address(cls):
- return ".".join(map(str, (random.randint(0, 255) for _ in range(4))))
- @classmethod
- def generateRandomString(cls, size=6, chars=string.ascii_lowercase + string.digits):
- return ''.join(random.choice(chars) for _ in range(size))
- @classmethod
- def generateUsername(cls):
- return cls.generateRandomString() + '@' + cls.generateRandomString() + 'desec.io'
- @classmethod
- def generateDomainname(cls):
- return random.choice(string.ascii_lowercase) + cls.generateRandomString() + '.de'
- @classmethod
- def generateDynDomainname(cls):
- return random.choice(string.ascii_lowercase) + cls.generateRandomString() + '.dedyn.io'
- """
- Creates a new user and saves it to the database.
- The user object is returned.
- """
- @classmethod
- def createUser(cls, username=None, password=None, dyn=False):
- if username is None:
- username = cls.generateUsername()
- user = User(email=username, dyn=dyn)
- user.plainPassword = cls.generateRandomString(size=12) if password is None else password
- user.set_password(user.plainPassword)
- user.save()
- return user
- """
- Creates a new domain and saves it to the database.
- The domain object is returned.
- """
- @classmethod
- def createDomain(cls, owner=None, dyn=False):
- if owner is None:
- owner = cls.createUser(username=None, dyn=False)
- if dyn:
- name = cls.generateDynDomainname()
- else:
- name = cls.generateDomainname()
- domain = Domain(name=name, owner=owner)
- cls.httpretty_for_pdns_domain_creation(name)
- domain.save()
- return domain
- @classmethod
- def httpretty_for_pdns_domain_creation(cls, name):
- httpretty.enable(allow_net_connect=False)
- httpretty.register_uri(httpretty.POST, settings.NSLORD_PDNS_API + '/zones')
- httpretty.register_uri(httpretty.GET,
- settings.NSLORD_PDNS_API + '/zones/' + name + '.',
- body='{"rrsets": []}',
- content_type="application/json")
- httpretty.register_uri(httpretty.GET,
- settings.NSLORD_PDNS_API + '/zones/' + name + './cryptokeys',
- body='[]',
- content_type="application/json")
- httpretty.register_uri(httpretty.PUT, settings.NSLORD_PDNS_API + '/zones/' + name + './notify',
- status=200)
- @classmethod
- def createToken(cls, user):
- token = Token.objects.create(user=user)
- token.save();
- return token.key;
|