def test_date_center_iso_date(): config = {"center_date": "2050-02-15T12:00:00", "stddev_days": 5} spec = _date_iso_spec(**config) loader = field_loader(spec) supplier = loader.get('foo') val = supplier.next(0) assert val.startswith('2050-')
def _test_invalid_cidr(cidr_value): spec = { f"network:ip?cidr={cidr_value}": {} } loader = field_loader(spec) with pytest.raises(SpecException): loader.get('network')
def _test_date_start_format_iso_type(spec): loader = field_loader(spec) supplier = loader.get('foo') # only the date portion of the iso date values = list(set([_date_only(supplier.next(i)) for i in range(100)])) for instance in ['2050-02-02', '2050-02-03', '2050-02-04']: assert instance in values
def test_ip_spec_invalid_base_and_cidr_specified(): spec = { "network:ip?cidr=10.0.0.0/24&base=10.0.0": {} } loader = field_loader(spec) with pytest.raises(SpecException): loader.get('network')
def test_date_end_doesnt_match_format(): # started to 7 Feb - 5 day offset gives center of 2 Feb +- 1 day config = {"duration_days": 1, "end": "07-Feb-2050", "format": "%d-%M-%Y"} spec = _date_spec(**config) loader = field_loader(spec) with pytest.raises(ValueError): loader.get('foo')
def test_load_yaml_shorthand(): spec = yaml.load(yaml_shorthand_spec, Loader=yaml.FullLoader) loader = field_loader(spec) supplier = loader.get('foo') assert supplier.next(0) == '"dog"' assert supplier.next(1) == '"cat"' assert supplier.next(2) == '"pig"'
def test_load_yaml(): spec = yaml.load(yaml_spec, Loader=yaml.FullLoader) loader = field_loader(spec) supplier = loader.get('foo') assert supplier.next(0) == 'dog' assert supplier.next(1) == 'cat' assert supplier.next(2) == 'pig'
def test_combine_fields(): spec = builder.spec_builder() \ .add_field("first", builder.values(["bob", "rob", "ann", "sue"])) \ .add_field("last", builder.values(["smith", "jones", "frank", "wee"])) \ .add_field("full_name", builder.combine(fields=["first", "last"], join_with=' ')) \ .build() supplier = field_loader(spec).get('full_name') assert supplier.next(0) == 'bob smith'
def test_select_list_using_loader(): spec = { "pets:select_list_subset?mean=2&stddev=0&join_with= ": ['dog', 'cat', 'pig', 'hog', 'bun'] } loader = field_loader(spec) supplier = loader.get('pets') value = supplier.next(0) assert len(value) == 7
def test_registry_from_local(): loader = field_loader(spec) reg = registries.Registry all_types = reg.types.get_all() handler = all_types.get('reverse_string') supplier = handler(spec.get('foo'), loader) assert supplier.next(0) == 'doe a dear'
def test_ip_v4_spec(): spec = _ipv4_spec(cidr="192.168.0.0/16") loader = field_loader(spec) supplier = loader.get('network') value = supplier.next(0) assert value.startswith('192.168.') value = supplier.next(256) assert value.startswith('192.168.')
def test_ip_spec_sample(): spec = { "network": { "type": "ip", "config": {"cidr": "8.1.2.0/24", "sample": "true"} } } loader = field_loader(spec) supplier = loader.get('network') value = supplier.next(0) assert value is not None
def test_registry_from_file(): # string_reverser, same as above just different key load_custom_code(os.path.join(test_dir, 'custom.py')) loader = field_loader(spec) reg = registries.Registry all_types = reg.types.get_all() handler = all_types.get('string_reverser') supplier = handler(spec.get('foo'), loader) assert supplier.next(0) == 'doe a dear'
def test_select_list_ref_contains_data(): spec_builder = builder.spec_builder() spec_builder.select_list_subset('pets', data=None, ref_name='pets_list', count=2) spec_builder.refs().values(key='pets_list', data=['goat', 'sheep', 'bear', 'cow', 'dragon']) loader = field_loader(spec_builder.build()) supplier = loader.get('pets') value = supplier.next(0) assert isinstance(value, list) assert len(value) == 2
def test_combine_list_spec_valid_normal(): ref_lists = [ ["ONE", "TWO"], ["TWO", "TRE"], ["TRE", "ONE"] ] spec = builder.spec_builder() \ .add_field("field", builder.combine_list(refs=ref_lists)) \ .add_ref("ONE", builder.values('uno')) \ .add_ref("TWO", builder.values('dos')) \ .add_ref("TRE", builder.values('tres')) \ .build() supplier = field_loader(spec).get('field') assert supplier.next(0) == 'unodos' assert supplier.next(1) == 'dostres' assert supplier.next(2) == 'tresuno'
def test_ip_precise_spec(): spec = { "network:ip.precise?cidr=10.0.0.0/24": {} } loader = field_loader(spec) supplier = loader.get('network') value = supplier.next(0) assert value == '10.0.0.0' value = supplier.next(128) assert value == '10.0.0.128' # /24 means only last octet changes, so should roll over back to zero value = supplier.next(256) assert value == '10.0.0.0'
def _test_ip_spec_invalid_base(base): loader = field_loader(_create_ip_spec_with_base(base)) with pytest.raises(SpecException): loader.get('network')
def _test_invalid_combine_spec(spec): with pytest.raises(SpecException) as err: field_loader(spec).get('field')
def _test_invalid_select_list_spec(spec): with pytest.raises(SpecException): field_loader(spec).get('field')
def test_combine_list_spec_valid_but_weird2(): spec = _combine_list_spec([["uno", "dos"]]) supplier = field_loader(spec).get('field') assert supplier.next(0) == 'unodos' assert supplier.next(1) == 'unodos'
def test_ip_spec_no_octets(): loader = field_loader(_create_ip_spec_with_base('192.168.1.1')) supplier = loader.get('network') value = supplier.next(0) assert value == '192.168.1.1'
def test_ip_spec_three_octets_dot_in_base(): loader = field_loader(_create_ip_spec_with_base('11.')) supplier = loader.get('network') value = supplier.next(0) assert value.startswith('11.') assert not value.startswith('11..')
def _get_unique_values(spec, key, iterations=100): loader = field_loader(spec) supplier = loader.get(key) return list(set([supplier.next(i) for i in range(iterations)]))
def _test_invalid_precise_spec(spec): loader = field_loader(spec) with pytest.raises(SpecException): loader.get('network')