Kubernetes-REST

 view release on metacpan or  search on metacpan

t/06_examples.t  view on Meta::CPAN

#!/usr/bin/env perl
# Tests that all code examples from Kubernetes::REST::Example POD
# construct valid IO::K8s objects (no live cluster needed).

use strict;
use warnings;
use Test::More;
use FindBin;
use lib "$FindBin::Bin/../lib";

use Kubernetes::REST;
use MIME::Base64 qw(encode_base64);

# Create a Kubernetes::REST instance for new_object (no server needed)
my $api = Kubernetes::REST->new(
    server => {
        endpoint          => 'https://127.0.0.1:6443',
        ssl_verify_server => 0,
    },
    credentials              => { token => 'test' },
    resource_map_from_cluster => 0,
);

ok($api, 'API object created');

# === Namespace ===
subtest 'Example: Namespace' => sub {
    my $ns = $api->new_object(Namespace =>
        metadata => { name => 'perl-test' },
    );
    ok($ns, 'Namespace created');
    is($ns->metadata->name, 'perl-test', 'name');
    is($ns->kind, 'Namespace', 'kind');
    is($ns->api_version, 'v1', 'apiVersion');
};

# === ConfigMap ===
subtest 'Example: ConfigMap' => sub {
    my $cm = $api->new_object(ConfigMap =>
        metadata => {
            name      => 'app-config',
            namespace => 'perl-test',
        },
        data => {
            'database.host' => 'postgres.perl-test.svc.cluster.local',
            'database.port' => '5432',
            'app.debug'     => 'true',
        },
    );
    ok($cm, 'ConfigMap created');
    is($cm->metadata->name, 'app-config', 'name');
    is($cm->metadata->namespace, 'perl-test', 'namespace');
    is($cm->data->{'database.host'}, 'postgres.perl-test.svc.cluster.local', 'data key');
    is($cm->kind, 'ConfigMap', 'kind');
    is($cm->api_version, 'v1', 'apiVersion');
};

# === Secret ===
subtest 'Example: Secret' => sub {
    my $secret = $api->new_object(Secret =>
        metadata => {
            name      => 'db-credentials',
            namespace => 'perl-test',
        },
        type => 'Opaque',
        data => {
            username => encode_base64('admin', ''),
            password => encode_base64('s3cret', ''),
        },
    );
    ok($secret, 'Secret created');
    is($secret->metadata->name, 'db-credentials', 'name');
    is($secret->type, 'Opaque', 'type');
    is($secret->data->{username}, encode_base64('admin', ''), 'data.username');
    is($secret->kind, 'Secret', 'kind');
};



( run in 2.056 seconds using v1.01-cache-2.11-cpan-524268b4103 )