Add command to generate super_client_info files
Change-Id: Id995295df35d62d277ebd78eb9f8ea184648799f
diff --git a/t/command/super_client_info.t b/t/command/super_client_info.t
new file mode 100644
index 0000000..d058aac
--- /dev/null
+++ b/t/command/super_client_info.t
@@ -0,0 +1,104 @@
+#!usr/bin/env perl
+use Mojolicious::Lite;
+use Mojolicious::Commands;
+use Data::Dumper;
+use Test::Output qw/:stdout :stderr :combined :functions/;
+use Test::More;
+use Test::Mojo;
+use Mojo::Util qw/decode encode/;
+use Mojo::JSON qw/decode_json/;
+use Mojo::File 'path';
+use File::Temp 'tempdir';
+
+my $t = Test::Mojo->new('Kalamar');
+
+my $dir = tempdir CLEANUP => 1;
+chdir $dir;
+
+my $dir_ext = tempdir CLEANUP => 1;
+
+my $cmds = $t->app->commands;
+
+like(
+ join(' ', @{$cmds->namespaces}),
+ qr!Mojolicious::Command!,
+ 'Namespace is set'
+);
+
+like(
+ join(' ', @{$cmds->namespaces}),
+ qr!Kalamar::Command!,
+ 'Namespace is set'
+);
+
+stdout_like(
+ sub {
+ local $ENV{HARNESS_ACTIVE} = 0;
+ $cmds->run('super-client-info');
+ },
+ qr/\[write\].*super_client_info/,
+ 'Write'
+);
+
+stdout_unlike(
+ sub {
+ local $ENV{HARNESS_ACTIVE} = 0;
+ $cmds->run('super-client-info');
+ },
+ qr/\[write\].*super_client_info/,
+ 'Already exists'
+);
+
+my $file = path($dir, 'super_client_info');
+
+my $out = decode_json($file->slurp);
+
+like($out->{client_id},qr!^.{20}$!);
+like($out->{client_secret},qr!^.{20}$!);
+
+unlink $file->to_string;
+
+stdout_like(
+ sub {
+ local $ENV{HARNESS_ACTIVE} = 0;
+ $cmds->run('super-client-info', 'my-client');
+ },
+ qr/\[write\].*super_client_info/,
+ 'Write with client id'
+);
+
+$out = decode_json($file->slurp);
+
+like($out->{client_id}, qr!my-client$!);
+like($out->{client_secret}, qr!^.{20}$!);
+
+my $file_ext = path($dir_ext, 'super_client_fun');
+
+stdout_like(
+ sub {
+ local $ENV{HARNESS_ACTIVE} = 0;
+ $cmds->run('super-client-info', 'my-client-2', $file_ext);
+ },
+ qr/\[write\].*super_client_fun/,
+ 'Error'
+);
+
+$out = decode_json($file->slurp);
+
+like($out->{client_id}, qr!my-client$!);
+like($out->{client_secret}, qr!^.{20}$!);
+
+my $secret_1 = $out->{client_secret};
+
+$out = decode_json($file_ext->slurp);
+
+like($out->{client_id}, qr!my-client-2$!);
+like($out->{client_secret}, qr!^.{20}$!);
+
+my $secret_2 = $out->{client_secret};
+
+isnt($secret_1, $secret_2, 'Generated secrets differ');
+
+
+done_testing;
+__END__