def test_preserved_name_of_dict(all_modes_kwargs): obj = {'metadata': {'name': 'preexisting-name'}} kopf.harmonize_naming(obj, name='provided-name', **all_modes_kwargs) assert 'name' in obj['metadata'] assert 'generateName' not in obj['metadata'] assert obj['metadata']['name'] == 'preexisting-name'
def test_prefixed_name_of_dict(relaxed_kwargs): obj = {} kopf.harmonize_naming(obj, name='provided-name', **relaxed_kwargs) assert 'name' not in obj['metadata'] assert 'generateName' in obj['metadata'] assert obj['metadata']['generateName'] == 'provided-name-'
def test_assigned_name_of_dict(strict_kwargs): obj = {} kopf.harmonize_naming(obj, name='provided-name', **strict_kwargs) assert 'name' in obj['metadata'] assert 'generateName' not in obj['metadata'] assert obj['metadata']['name'] == 'provided-name'
def test_preserved_name_of_dict(forcedness, strictness, obj1): obj1 = copy.deepcopy(obj1) kopf.harmonize_naming(obj1, name='provided-name', **forcedness, **strictness) assert obj1['metadata'].get('name') != 'provided-name' assert obj1['metadata'].get('generateName') != 'provided-name'
def test_assignment_of_nonstrict_name_of_kubernetes_model( forcedness, strictness, kubernetes_model): kubernetes_model.metadata = None kopf.harmonize_naming(kubernetes_model, name='provided-name', **forcedness, **strictness) assert kubernetes_model.metadata.name is None assert kubernetes_model.metadata.generate_name == 'provided-name-'
def test_assignment_of_nonstrict_name_of_dict(forcedness, strictness, obj1): obj1 = copy.deepcopy(obj1) kopf.harmonize_naming(obj1, name='provided-name', **forcedness, **strictness) assert 'name' not in obj1['metadata'] assert 'generateName' in obj1['metadata'] assert obj1['metadata']['generateName'] == 'provided-name-'
def test_preserved_names_of_pykube_object(forcedness, strictness, pykube_object, obj1): pykube_object.obj = copy.deepcopy(obj1) kopf.harmonize_naming(pykube_object, name='provided-name', **forcedness, **strictness) assert pykube_object.obj['metadata'].get('name') != 'provided-name' assert pykube_object.obj['metadata'].get('generateName') != 'provided-name'
def test_assignment_of_strict_name_of_pykube_object(forcedness, strictness, pykube_object, obj1): pykube_object.obj = copy.deepcopy(obj1) kopf.harmonize_naming(pykube_object, name='provided-name', **forcedness, **strictness) assert pykube_object.obj['metadata'].get('name') == 'provided-name' assert pykube_object.obj['metadata'].get('generateName') is None
def test_overwriting_of_relaxed_name_of_kubernetes_model( forcedness, strictness, kubernetes_model, obj1): kubernetes_model.metadata.name = obj1.get('metadata', {}).get('name') kubernetes_model.metadata.generate_name = obj1.get('metadata', {}).get('generateName') kopf.harmonize_naming(kubernetes_model, name='provided-name', **forcedness, **strictness) assert kubernetes_model.metadata.name is None assert kubernetes_model.metadata.generate_name == 'provided-name-'
def test_preserved_names_of_kubernetes_model(forcedness, strictness, kubernetes_model, obj1): kubernetes_model.metadata.name = obj1.get('metadata', {}).get('name') kubernetes_model.metadata.generate_name = obj1.get('metadata', {}).get('generateName') kopf.harmonize_naming(kubernetes_model, name='provided-name', **forcedness, **strictness) assert kubernetes_model.metadata.name != 'provided-name' assert kubernetes_model.metadata.generate_name != 'provided-name'
def test_preserved_names_of_dicts(forcedness, strictness, multicls, obj1, obj2): obj1, obj2 = copy.deepcopy(obj1), copy.deepcopy(obj2) objs = multicls([obj1, obj2]) kopf.harmonize_naming(objs, name='provided-name', **forcedness, **strictness) assert obj1['metadata'].get('name') != 'provided-name' assert obj2['metadata'].get('name') != 'provided-name' assert obj1['metadata'].get('generateName') != 'provided-name' assert obj2['metadata'].get('generateName') != 'provided-name'
def test_assignment_of_nonstrict_names_of_dicts(forcedness, strictness, multicls, obj1, obj2): obj1, obj2 = copy.deepcopy(obj1), copy.deepcopy(obj2) objs = multicls([obj1, obj2]) kopf.harmonize_naming(objs, name='provided-name', **forcedness, **strictness) assert 'name' not in obj1['metadata'] assert 'name' not in obj2['metadata'] assert 'generateName' in obj1['metadata'] assert 'generateName' in obj2['metadata'] assert obj1['metadata']['generateName'] == 'provided-name-' assert obj2['metadata']['generateName'] == 'provided-name-'
def test_assigned_names_of_multiple_objects(strict_kwargs, multicls): obj1 = {'metadata': {'name': 'preexisting-name-1'}} obj2 = {'metadata': {'name': 'preexisting-name-2'}} objs = multicls([obj1, obj2]) kopf.harmonize_naming(objs, name='provided-name', **strict_kwargs) assert 'name' in obj1['metadata'] assert 'generateName' not in obj1['metadata'] assert obj1['metadata']['name'] == 'preexisting-name-1' assert 'name' in obj2['metadata'] assert 'generateName' not in obj2['metadata'] assert obj2['metadata']['name'] == 'preexisting-name-2'
def test_prefixed_names_of_multiple_objects(relaxed_kwargs, multicls): obj1 = {} obj2 = {} objs = multicls([obj1, obj2]) kopf.harmonize_naming(objs, name='provided-name', **relaxed_kwargs) assert 'name' not in obj1['metadata'] assert 'generateName' in obj1['metadata'] assert obj1['metadata']['generateName'] == 'provided-name-' assert 'name' not in obj2['metadata'] assert 'generateName' in obj2['metadata'] assert obj2['metadata']['generateName'] == 'provided-name-'
def test_when_unset_for_name_harmonization(): with pytest.raises(LookupError) as e: kopf.harmonize_naming([]) assert 'Owner must be set explicitly' in str(e.value)
def test_when_empty_for_name_harmonization(owner): owner._replace_with({}) with pytest.raises(LookupError) as e: kopf.harmonize_naming([]) assert 'Name must be set explicitly' in str(e.value)
def test_when_set_for_name_harmonization(owner): obj = {} kopf.harmonize_naming(obj) assert obj['metadata']['generateName'].startswith(OWNER_NAME)
def test_in_name_harmonization(): with pytest.raises(TypeError) as e: kopf.harmonize_naming(object(), 'x') assert "K8s object class is not supported" in str(e.value)