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 )