Esempio n. 1
0
def any_url_field(field, **kwargs):
    """
    Return random value for URLField
    >>> result = any_field(models.URLField())
    >>> from django.core.validators import URLValidator
    >>> re.match(URLValidator.regex, result) is not None
    True
    """
    url = kwargs.get('url')

    if not url:
        verified = [validator for validator in field.validators \
                    if isinstance(validator, validators.URLValidator) and \
                    validator.verify_exists == True]
        if verified:
            url = choice(['http://news.yandex.ru/society.html',
                          'http://video.google.com/?hl=en&tab=wv',
                          'http://www.microsoft.com/en/us/default.aspx',
                          'http://habrahabr.ru/company/opera/',
                          'http://www.apple.com/support/hardware/',
                          'http://ya.ru',
                          'http://google.com',
                          'http://fr.wikipedia.org/wiki/France'])
        else:
            url = "http://%s.%s/%s" % (
                xunit.any_string(max_length=10),
                xunit.any_string(min_length=2, max_length=3),
                xunit.any_string(max_length=20))

    return url
Esempio n. 2
0
def any_url_field(field, **kwargs):
    """
    Return random value for URLField
    >>> result = any_field(models.URLField())
    >>> from django.core.validators import URLValidator
    >>> re.match(URLValidator.regex, result) is not None
    True
    """
    url = kwargs.get('url')

    if not url:
        verified = [validator for validator in field.validators \
                    if isinstance(validator, validators.URLValidator) and \
                    getattr(validator, 'verify_exists', False) == True]
        if verified:
            url = choice(['http://news.yandex.ru/society.html',
                          'http://video.google.com/?hl=en&tab=wv',
                          'http://www.microsoft.com/en/us/default.aspx',
                          'http://habrahabr.ru/company/opera/',
                          'http://www.apple.com/support/hardware/',
                          'http://ya.ru',
                          'http://google.com',
                          'http://fr.wikipedia.org/wiki/France'])
        else:
            url = "http://%s.%s/%s" % (
                xunit.any_string(max_length=10),
                xunit.any_string(min_length=2, max_length=3),
                xunit.any_string(max_length=20))

    return url
Esempio n. 3
0
def any_email_field(field, **kwargs):
    """
    Return random value for EmailField

    >>> result = any_field(models.EmailField())
    >>> type(result)
    <type 'str'>
    >>> re.match(r"(?:^|\s)[-a-z0-9_.]+@(?:[-a-z0-9]+\.)+[a-z]{2,6}(?:\s|$)", result, re.IGNORECASE) is not None
    True
    """
    return "%s@%s.%s" % (xunit.any_string(max_length=10),
                         xunit.any_string(max_length=10),
                         xunit.any_string(min_length=2, max_length=3))
Esempio n. 4
0
def any_email_field(field, **kwargs):
    """
    Return random value for EmailField

    >>> result = any_field(models.EmailField())
    >>> type(result)
    <type 'str'>
    >>> re.match(r"(?:^|\s)[-a-z0-9_.]+@(?:[-a-z0-9]+\.)+[a-z]{2,6}(?:\s|$)", result, re.IGNORECASE) is not None
    True
    """
    return "%s@%s.%s" % (xunit.any_string(max_length=10),
                         xunit.any_string(max_length=10),
                         xunit.any_string(min_length=2, max_length=3))
Esempio n. 5
0
def any_file_field(field, **kwargs):
    """
    Lookup for nearest existing file

    """
    def get_some_file(path):
        subdirs, files = field.storage.listdir(path)

        if files:
            result_file = random.choice(files)
            instance = field.storage.open(os.path.join(path, result_file)).file
            return FieldFile(instance, field, result_file)

        for subdir in subdirs:
            result = get_some_file(os.path.join(path, subdir))
            if result:
                return result

    if callable(field.upload_to):
        generated_filepath = field.upload_to(None, xunit.any_string(ascii_letters, 10, 20))
        upload_to = os.path.dirname(generated_filepath)
    else:
        upload_to = field.upload_to
    if not field.storage.exists(upload_to):
        # make a directory, assuming it's on local file system
        os.makedirs(field.storage.path(upload_to))
    result = get_some_file(upload_to)

    if result is None and not field.blank:
        raise TypeError("Can't found file in %s for non nullable FileField" % field.upload_to)
    return result
Esempio n. 6
0
    def login_as(self, **kwargs):
        password = xunit.any_string()
        user = any_user(password=password, **kwargs)

        if self.login(username=user.username, password=password):
            return user
        raise AssertionError('Can''t login with autogenerated user')
Esempio n. 7
0
    def login_as(self, **kwargs):
        password = xunit.any_string()
        user = any_user(password=password, **kwargs)

        if self.login(username=user.username, password=password):
            return user
        raise AssertionError('Can''t login with autogenerated user')
Esempio n. 8
0
def any_file_field(field, **kwargs):
    """
    Lookup for nearest existing file

    """
    def get_some_file(path):
        subdirs, files = field.storage.listdir(path)

        if files:
            result_file = random.choice(files)
            instance = field.storage.open("%s/%s" % (path, result_file)).file
            return FieldFile(instance, field, result_file)

        for subdir in subdirs:
            result = get_some_file("%s/%s" % (path, subdir))
            if result:
                return result

    if callable(field.upload_to):
        generated_filepath = field.upload_to(field.model, xunit.any_string(ascii_letters, 10, 20))
        upload_to = os.path.dirname(generated_filepath)
    else:
        upload_to = field.upload_to
    result = get_some_file(upload_to)

    if result is None and not field.null:
        raise TypeError("Can't found file in %s for non nullable FileField" % field.upload_to)
    return result
Esempio n. 9
0
def any_file_field(field, **kwargs):
    """
    Lookup for nearest existing file

    """
    def get_some_file(path):
        subdirs, files = field.storage.listdir(path)

        if files:
            result_file = random.choice(files)
            instance = field.storage.open("%s/%s" % (path, result_file)).file
            return FieldFile(instance, field, result_file)

        for subdir in subdirs:
            result = get_some_file("%s/%s" % (path, subdir))
            if result:
                return result

    if callable(field.upload_to):
        generated_filepath = field.upload_to(None, xunit.any_string(ascii_letters, 10, 20))
        upload_to = os.path.dirname(generated_filepath)
    else:
        upload_to = field.upload_to
    result = get_some_file(upload_to)

    if result is None and not field.null:
        raise TypeError("Can't found file in %s for non nullable FileField" % field.upload_to)
    return result
def any_file_field(field, **kwargs):
    """
    Lookup for nearest existing file

    """
    def get_some_file(path):
        subdirs, files = field.storage.listdir(path)

        if files:
            result_file = random.choice(files)
            instance = field.storage.open(os.path.join(path, result_file)).file
            return FieldFile(instance, field, result_file)

        for subdir in subdirs:
            result = get_some_file(os.path.join(path, subdir))
            if result:
                return result

    if callable(field.upload_to):
        generated_filepath = field.upload_to(None, xunit.any_string(ascii_letters, 10, 20))
        upload_to = os.path.dirname(generated_filepath)
    else:
        upload_to = field.upload_to
    if not field.storage.exists(upload_to):
        # make a directory, assuming it's on local file system
        os.makedirs(field.storage.path(upload_to))
    result = get_some_file(upload_to)

    if result is None and not field.null:
        raise TypeError("Can't found file in %s for non nullable FileField" % field.upload_to)
    return result
Esempio n. 11
0
def any_file_field(field, **kwargs):
    """
    Lookup for nearest existing file

    """
    def get_some_file(path):
        subdirs, files = field.storage.listdir(path)
        if files:
            result_file = random.choice(files)
        else:
            tmp_file = open("{}/{}".format(path, "tmp.txt"), "w")
            tmp_file.write("auto generated by django_whatever")
            tmp_file.close()
            result_file = "tmp.txt"
        result_file = "{}/{}".format(path, result_file)
        instance = kwargs.get("instance", None)
        return FieldFile(instance, field, result_file)

    if callable(field.upload_to):
        generated_filepath = field.upload_to(None, xunit.any_string(ascii_letters, 10, 20))
        upload_to = os.path.dirname(generated_filepath)
    else:
        upload_to = field.upload_to
    folder = os.path.join(field.storage.base_location, upload_to)
    if not os.path.exists(folder):
        os.makedirs(folder)
    result = get_some_file(folder)

    if result is None and not field.null:
        raise TypeError("Can't found file in %s for non nullable FileField" % field.upload_to)
    return result
Esempio n. 12
0
def email_field_data(field, **kwargs):
    """
    Return random value for EmailField

    >>> result = any_form_field(forms.EmailField(min_length=10, max_length=30))
    >>> type(result)
    <type 'str'>
    >>> len(result) <= 30, len(result) >= 10
    (True, True)
    """
    max_length = 10
    if field.max_length:
        max_length = (field.max_length - 5) // 2
    min_length = 10
    if field.min_length:
        min_length = (field.min_length - 4) // 2
    return "%s@%s.%s" % (
        xunit.any_string(min_length=min_length, max_length=max_length),
        xunit.any_string(min_length=min_length, max_length=max_length),
        xunit.any_string(min_length=2, max_length=3))
Esempio n. 13
0
def any_char_field(field, **kwargs):
    """
    Return random value for CharField

    >>> result = any_field(models.CharField(max_length=10))
    >>> type(result)
    <type 'str'>
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length)
    return xunit.any_string(min_length=min_length, max_length=max_length)
def char_field_data(field, **kwargs):
    """
    Return random value for CharField
    >>> result = any_form_field(forms.CharField(min_length=3, max_length=10))
    >>> type(result)
    <type 'str'>
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length or 255)    
    return xunit.any_string(min_length=field.min_length or min_length, 
                            max_length=field.max_length or max_length)
Esempio n. 15
0
def any_char_field(field, **kwargs):
    """
    Return random value for CharField

    >>> result = any_field(models.CharField(max_length=10))
    >>> type(result)
    <type 'str'>
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length)
    return xunit.any_string(min_length=min_length, max_length=max_length)
Esempio n. 16
0
def char_field_data(field, **kwargs):
    """
    Return random value for CharField
    >>> result = any_form_field(forms.CharField(min_length=3, max_length=10))
    >>> type(result)
    <type 'str'>
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length or 255)
    return xunit.any_string(min_length=field.min_length or min_length,
                            max_length=field.max_length or max_length)
def email_field_data(field, **kwargs):
    """
    Return random value for EmailField

    >>> result = any_form_field(forms.EmailField(min_length=10, max_length=30))
    >>> type(result)
    <type 'str'>
    >>> len(result) <= 30, len(result) >= 10
    (True, True)
    """
    max_length = 10
    if field.max_length:
        max_length = (field.max_length -5) / 2 
    min_length = 10
    if field.min_length:
        min_length = (field.min_length-4) / 2
    return "%s@%s.%s" % (
        xunit.any_string(min_length=min_length, max_length=max_length),
        xunit.any_string(min_length=min_length, max_length=max_length),
        xunit.any_string(min_length=2, max_length=3))
Esempio n. 18
0
def any_slug_field(field, **kwargs):
    """
    Return random value for SlugField
    >>> result = any_field(models.SlugField())
    >>> type(result)
    <type 'str'>
    >>> from django.core.validators import slug_re
    >>> re.match(slug_re, result) is not None
    True
    """
    letters = ascii_letters + digits + '_-'
    return xunit.any_string(letters = letters, max_length = field.max_length)
Esempio n. 19
0
def any_slug_field(field, **kwargs):
    """
    Return random value for SlugField
    >>> result = any_field(models.SlugField())
    >>> type(result)
    <type 'str'>
    >>> from django.core.validators import slug_re
    >>> re.match(slug_re, result) is not None
    True
    """
    letters = ascii_letters + digits + '_-'
    return xunit.any_string(letters = letters, max_length = field.max_length)
Esempio n. 20
0
def any_char_field(field, **kwargs):
    """
    Return random value for CharField

    >>> result = any_field(models.CharField(max_length=10))
    >>> type(result)
    <type 'str'>
    """
    if validators.validate_comma_separated_integer_list in field.validators:
        return any_commaseparatedinteger_field(field, **kwargs)

    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length)
    return xunit.any_string(min_length=min_length, max_length=max_length)
Esempio n. 21
0
    def login_as(self, **kwargs):
        password = xunit.any_string()
        if 'user' in kwargs:
            user = kwargs['user']
            try:
                user.set_password(password)
                user.save()
            except Exception:
                raise AssertionError('Bad user object')
        else:
            user = any_user(password=password, **kwargs)

        if self.login(username=user.username, password=password):
            return user
        raise AssertionError('Can' 't login with autogenerated user')
Esempio n. 22
0
    def login_as(self, **kwargs):
        password = xunit.any_string()
        if 'user' in kwargs:
            user = kwargs['user']
            try:
                user.set_password(password)
                user.save()
            except Exception:
                raise AssertionError('Bad user object')
        else:
            user = any_user(password=password, **kwargs)

        if self.login(username=user.username, password=password):
            return user
        raise AssertionError('Can''t login with autogenerated user')
Esempio n. 23
0
def slug_field_data(field, **kwargs):
    """
    Return random value for SlugField

    >>> result = any_form_field(forms.SlugField())
    >>> type(result)
    <type 'str'>
    >>> from django.core.validators import slug_re
    >>> import re
    >>> re.match(slug_re, result) is not None
    True
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length or 20)

    from string import ascii_letters, digits
    letters = ascii_letters + digits + '_-'
    return xunit.any_string(letters=letters, min_length=min_length, max_length=max_length)
def slug_field_data(field, **kwargs):
    """
    Return random value for SlugField
    
    >>> result = any_form_field(forms.SlugField())
    >>> type(result)
    <type 'str'>
    >>> from django.core.validators import slug_re
    >>> import re
    >>> re.match(slug_re, result) is not None
    True
    """
    min_length = kwargs.get('min_length', 1)
    max_length = kwargs.get('max_length', field.max_length or 20)
    
    from string import ascii_letters, digits
    letters = ascii_letters + digits + '_-' 
    return xunit.any_string(letters = letters, min_length = min_length, max_length = max_length)
Esempio n. 25
0
def generic_ipaddress_field_data(field, **kwargs):
    """
    Return random value for GenericIPAddressField

    >>> ipv4_address = any_form_field(forms.GenericIPAddressField(protocol='ipv4'))
    >>> type(ipv4_address)
    <type 'str'>
    >>> from django.core.validators import URLValidator
    >>> import re
    >>> re.match(URLValidator.ipv4_re, ipv4_address) is not None
    True
    >>> ipv6_address = any_form_field(forms.GenericIPAddressField(protocol='ipv6'))
    >>> type(ipv6_address)
    <type 'str'>
    >>> from django.utils.ipv6 import is_valid_ipv6_address
    >>> is_valid_ipv6_address(ipv6_address) is True
    True
    >>> ipv46_address = any_form_field(forms.GenericIPAddressField())
    >>> type(ipv46_address)
    <type 'str'>
    >>> from django.core.validators import validate_ipv46_address
    >>> validate_ipv46_address(ipv46_address) is True
    False
    """
    if field.default_validators == [validate_ipv46_address]:
        protocol = random.choice(('ipv4', 'ipv6'))
    elif field.default_validators == [validate_ipv4_address]:
        protocol = 'ipv4'
    elif field.default_validators == [validate_ipv6_address]:
        protocol = 'ipv6'
    else:
        raise Exception('Unexpected validators')

    if protocol == 'ipv4':
        return generic_ipaddress_field_data(field)
    if protocol == 'ipv6':
        nums = [
            str(xunit.any_string(hexdigits, min_length=4, max_length=4))
            for _ in range(0, 8)
        ]
        return ":".join(nums)
    def any_genericipaddress_field(field, **kwargs):
        """
        Return random value for GenericIPAddressField
        >>> ipv4_address = any_field(models.GenericIPAddressField(protocol='ipv4'))
        >>> type(ipv4_address)
        <type 'str'>
        >>> from django.core.validators import ipv4_re
        >>> re.match(ipv4_re, ipv4_address) is not None
        True
        >>> ipv6_address = any_field(models.GenericIPAddressField(protocol='ipv6'))
        >>> type(ipv6_address)
        <type 'str'>
        >>> from django.utils.ipv6 import is_valid_ipv6_address
        >>> is_valid_ipv6_address(ipv6_address) is True
        True
        >>> ipv46_address = any_field(models.GenericIPAddressField())
        >>> type(ipv46_address)
        <type 'str'>
        >>> from django.core.validators import validate_ipv46_address
        >>> validate_ipv46_address(ipv46_address) is True
        False
        """
        if field.default_validators == [validate_ipv46_address]:
            protocol = random.choice(('ipv4', 'ipv6'))
        elif field.default_validators == [validate_ipv4_address]:
            protocol = 'ipv4'
        elif field.default_validators == [validate_ipv6_address]:
            protocol = 'ipv6'
        else:
            raise Exception('Unexpected validators')

        if protocol == 'ipv4':
            if django.VERSION < (1, 9):
                return any_ipaddress_field(field)
            else:
                return any_genericipaddress_field(field)
        if protocol == 'ipv6':
            nums = [str(xunit.any_string(hexdigits, min_length=4, max_length=4)) for _ in xrange(0, 8)]
            return ":".join(nums)