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