Kubernetes-REST

 view release on metacpan or  search on metacpan

t/16_cli_watch.t  view on Meta::CPAN

# _type_filter
# ============================================================================

subtest '_type_filter - no filter returns empty hash' => sub {
    my $w = make_watcher();
    my $tf = $w->_type_filter;
    is ref $tf, 'HASH', 'returns hashref';
    is scalar keys %$tf, 0, 'empty when no event_type set';
};

subtest '_type_filter - parses comma-separated types' => sub {
    my $w = make_watcher(event_type => 'ADDED,DELETED');
    my $tf = $w->_type_filter;
    ok $tf->{ADDED}, 'ADDED in filter';
    ok $tf->{DELETED}, 'DELETED in filter';
    ok !$tf->{MODIFIED}, 'MODIFIED not in filter';
};

subtest '_type_filter - uppercases types' => sub {
    my $w = make_watcher(event_type => 'added,modified');
    my $tf = $w->_type_filter;
    ok $tf->{ADDED}, 'added uppercased to ADDED';
    ok $tf->{MODIFIED}, 'modified uppercased to MODIFIED';
};

# ============================================================================
# CLI::Role::Connection - _build_api
# ============================================================================

subtest 'CLI::Role::Connection - api attribute with kubeconfig' => sub {
    use File::Temp qw(tempdir);
    use YAML::XS ();

    my $tmpdir = tempdir(CLEANUP => 1);
    my $kc_file = "$tmpdir/kubeconfig";

    YAML::XS::DumpFile($kc_file, {
        apiVersion => 'v1',
        kind => 'Config',
        'current-context' => 'test',
        clusters => [{
            name => 'test-cluster',
            cluster => {
                server => 'https://test.k8s.local:6443',
                'insecure-skip-tls-verify' => 1,
            },
        }],
        contexts => [{
            name => 'test',
            context => { cluster => 'test-cluster', user => 'test-user' },
        }],
        users => [{
            name => 'test-user',
            user => { token => 'test-token' },
        }],
    });

    my $w = make_watcher(kubeconfig => $kc_file);
    my $api = $w->api;
    isa_ok $api, 'Kubernetes::REST', 'api built from kubeconfig';
    is $api->server->endpoint, 'https://test.k8s.local:6443', 'server endpoint from kubeconfig';
    is $api->credentials->token, 'test-token', 'token from kubeconfig';
};

subtest 'CLI::Role::Connection - api with context override' => sub {
    use File::Temp qw(tempdir);
    use YAML::XS ();

    my $tmpdir = tempdir(CLEANUP => 1);
    my $kc_file = "$tmpdir/kubeconfig";

    YAML::XS::DumpFile($kc_file, {
        apiVersion => 'v1',
        kind => 'Config',
        'current-context' => 'default',
        clusters => [
            { name => 'c1', cluster => { server => 'https://c1.local', 'insecure-skip-tls-verify' => 1 } },
            { name => 'c2', cluster => { server => 'https://c2.local', 'insecure-skip-tls-verify' => 1 } },
        ],
        contexts => [
            { name => 'default', context => { cluster => 'c1', user => 'u1' } },
            { name => 'other', context => { cluster => 'c2', user => 'u1' } },
        ],
        users => [{ name => 'u1', user => { token => 'tok' } }],
    });

    my $w = make_watcher(kubeconfig => $kc_file, context => 'other');
    my $api = $w->api;
    is $api->server->endpoint, 'https://c2.local', 'context override selects correct cluster';
};

done_testing;



( run in 1.019 second using v1.01-cache-2.11-cpan-524268b4103 )