Ejemplo n.º 1
0
def test_catchall_versions_are_ignored_for_nonpreferred_resources():
    resource = Resource(
        group='group1',
        version='version1',
        preferred=False,
        plural='plural1',
        singular='singular1',
        kind='kind1',
        shortcuts=['shortcut1', 'shortcut2'],
        categories=['category1', 'category2'],
    )
    selector = Selector(EVERYTHING)
    matches = selector.check(resource)
    assert not matches
Ejemplo n.º 2
0
def test_two_args_with_group_and_conventional_version(version, group, name):
    selector = Selector(f'{group}/{version}', name)
    assert selector.group == group
    assert selector.version == version
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == name
Ejemplo n.º 3
0
def test_kwarg_version():
    selector = Selector(version='version1', any_name='whatever')
    assert selector.group is None
    assert selector.version == 'version1'
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == 'whatever'
Ejemplo n.º 4
0
def test_two_args_and_corev1(name):
    selector = Selector('v1', name)
    assert selector.group == ''
    assert selector.version == 'v1'
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == name
Ejemplo n.º 5
0
def test_one_arg_with_group_and_conventional_version(version, group):
    selector = Selector(f'name1.{version}.{group}')
    assert selector.group == group
    assert selector.version == version
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == 'name1'
Ejemplo n.º 6
0
def test_two_args_with_only_group(group, name):
    selector = Selector(f'{group}', name)
    assert selector.group == group
    assert selector.version is None
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == name
Ejemplo n.º 7
0
def test_one_arg_with_group(group):
    selector = Selector(f'name1.{group}')
    assert selector.group == group
    assert selector.version is None
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == 'name1'
Ejemplo n.º 8
0
def test_three_args(group, version, name):
    selector = Selector(group, version, name)
    assert selector.group == group
    assert selector.version == version
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == name
Ejemplo n.º 9
0
def test_one_arg_with_only_name(name):
    selector = Selector(name)
    assert selector.group is None
    assert selector.version is None
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == name
Ejemplo n.º 10
0
def test_kwarg_any_name():
    selector = Selector(any_name='name1')
    assert selector.group is None
    assert selector.version is None
    assert selector.kind is None
    assert selector.plural is None
    assert selector.singular is None
    assert selector.shortcut is None
    assert selector.category is None
    assert selector.any_name == 'name1'
Ejemplo n.º 11
0
def test_resources():
    resource1 = Resource('group1', 'version1', 'plural1')
    resource2 = Resource('group2', 'version2', 'plural2')
    selector1 = Selector('group1', 'version1', 'plural1')
    selector2 = Selector('group2', 'version2', 'plural2')
    handler1 = Mock(selector=selector1)
    handler2 = Mock(selector=selector2)

    registry = OperatorRegistry()
    registry.resource_watching_handlers.append(handler1)
    registry.resource_changing_handlers.append(handler2)
    registry.resource_watching_handlers.append(handler2)
    registry.resource_changing_handlers.append(handler1)

    resources = registry.resources

    assert isinstance(resources, collections.abc.Collection)
    assert len(resources) == 2

    assert resource1 in resources
    assert resource2 in resources
Ejemplo n.º 12
0
def test_empty_names_are_prohibited_with_kwargs(kwarg):
    with pytest.raises(TypeError) as err:
        Selector(**{kwarg: ''})
    assert "Names must not be empty strings" in str(err.value)
Ejemplo n.º 13
0
def test_conflicting_name_with_positional_name(kwarg):
    with pytest.raises(TypeError) as err:
        Selector('name1', **{kwarg: 'name2'})
    assert "Ambiguous resource specification with names" in str(err.value)
Ejemplo n.º 14
0
def test_conflicting_names_with_only_kwargs(kwargs):
    with pytest.raises(TypeError) as err:
        Selector(**kwargs)
    assert "Ambiguous resource specification with names" in str(err.value)
Ejemplo n.º 15
0
def test_no_name_but_version():
    with pytest.raises(TypeError) as err:
        Selector(version='version1')
    assert "Unspecific resource with no names" in str(err.value)
Ejemplo n.º 16
0
def test_when_groupversion_mismatch_but_names_do_match(resource, kwarg, kwval,
                                                       group, version):
    selector = Selector(group=group, version=version, **{kwarg: kwval})
    matches = selector.check(resource)
    assert not matches
Ejemplo n.º 17
0
def test_no_args():
    with pytest.raises(TypeError) as err:
        Selector()
    assert "Unspecific resource with no names" in str(err.value)
Ejemplo n.º 18
0
def test_no_name_but_group():
    with pytest.raises(TypeError) as err:
        Selector(group='group1')
    assert "Unspecific resource with no names" in str(err.value)
Ejemplo n.º 19
0
def test_different_resource():
    selector = Selector('group1', 'version1', 'plural1')
    resource = Resource('group2', 'version2', 'plural2')
    handler = Mock(selector=selector)
    matches = _matches_resource(handler, resource)
    assert not matches
Ejemplo n.º 20
0
def test_equivalent_resources():
    selector = Selector('group1', 'version1', 'plural1')
    resource = Resource('group1', 'version1', 'plural1')
    handler = Mock(selector=selector)
    matches = _matches_resource(handler, resource)
    assert matches
Ejemplo n.º 21
0
def test_empty_names_are_prohibited_with_positionals():
    with pytest.raises(TypeError) as err:
        Selector('')
    assert "Names must not be empty strings" in str(err.value)
Ejemplo n.º 22
0
def test_when_matches_everything(resource, group, version):
    selector = Selector(EVERYTHING, group=group, version=version)
    matches = selector.check(resource)
    assert matches
Ejemplo n.º 23
0
def test_selection_of_nonspecific_resources(resource, kwarg, kwval):
    selector = Selector(**{kwarg: kwval})
    selected = selector.select([resource])
    assert not selector.is_specific  # prerequisite
    assert selected == {resource}
Ejemplo n.º 24
0
def test_when_matches_names(resource, kwarg, kwval, group, version):
    selector = Selector(group=group, version=version, **{kwarg: kwval})
    matches = selector.check(resource)
    assert matches
Ejemplo n.º 25
0
def test_events_are_matched_when_explicitly_named(selector_args):
    resource = Resource('', 'v1', 'events')
    selector = Selector(*selector_args)
    matches = selector.check(resource)
    assert matches
Ejemplo n.º 26
0
def test_precedence_of_corev1_same_as_others_when_nonspecific(
        resource, v1_resource, kwarg, kwval):
    selector = Selector(**{kwarg: kwval})
    selected = selector.select([resource, v1_resource])
    assert not selector.is_specific  # prerequisite
    assert selected == {resource, v1_resource}
Ejemplo n.º 27
0
def test_too_many_args():
    with pytest.raises(TypeError) as err:
        Selector('group1', 'version1', 'name1', 'etc')
    assert "Too many positional arguments" in str(err.value)
Ejemplo n.º 28
0
def test_events_are_excluded_from_everything(resource_kwargs, selector_args):
    resource = Resource(**resource_kwargs, plural='events')
    selector = Selector(*selector_args)
    matches = selector.check(resource)
    assert not matches
Ejemplo n.º 29
0
def selector(resource):
    """ The selector used in the tests. Usually mocked, so it does not matter. """
    return Selector(group=resource.group, version=resource.version, plural=resource.plural)
Ejemplo n.º 30
0
def test_repr_with_names(kw):
    selector = Selector(**{kw: 'name1'})
    selector_repr = repr(selector)
    assert selector_repr == f"Selector({kw}='name1')"