-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add vault remote tests and missing extension funcs
- Loading branch information
Showing
4 changed files
with
171 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
#!/usr/bin/perl | ||
|
||
use strict; | ||
use warnings; | ||
use File::Basename; | ||
use File::Compare; | ||
use File::Copy; | ||
use Test::More; | ||
use lib 't'; | ||
use pgtde; | ||
use Env; | ||
|
||
# Get file name and CREATE out file name and dirs WHERE requried | ||
PGTDE::setup_files_dir(basename($0)); | ||
|
||
# CREATE new PostgreSQL node and do initdb | ||
my $node = PGTDE->pgtde_init_pg(); | ||
my $pgdata = $node->data_dir; | ||
|
||
{ | ||
package MyWebServer; | ||
|
||
use HTTP::Server::Simple::CGI; | ||
use base qw(HTTP::Server::Simple::CGI); | ||
|
||
my %dispatch = ( | ||
'/token' => \&resp_token, | ||
'/url' => \&resp_url, | ||
# ... | ||
); | ||
|
||
sub handle_request { | ||
my $self = shift; | ||
my $cgi = shift; | ||
|
||
my $path = $cgi->path_info(); | ||
my $handler = $dispatch{$path}; | ||
|
||
if (ref($handler) eq "CODE") { | ||
print "HTTP/1.0 200 OK\r\n"; | ||
$handler->($cgi); | ||
|
||
} else { | ||
print "HTTP/1.0 404 Not found\r\n"; | ||
print $cgi->header, | ||
$cgi->start_html('Not found'), | ||
$cgi->h1('Not found'), | ||
$cgi->end_html; | ||
} | ||
} | ||
|
||
sub resp_token { | ||
my $cgi = shift; | ||
print $cgi->header, | ||
"$ENV{'ROOT_TOKEN'}\r\n"; | ||
} | ||
|
||
sub resp_url { | ||
my $cgi = shift; | ||
print $cgi->header, | ||
"http://127.0.0.1:8200\r\n"; | ||
} | ||
|
||
} | ||
my $pid = MyWebServer->new(8888)->background(); | ||
|
||
|
||
# UPDATE postgresql.conf to include/load pg_tde library | ||
open my $conf, '>>', "$pgdata/postgresql.conf"; | ||
print $conf "shared_preload_libraries = 'pg_tde'\n"; | ||
close $conf; | ||
|
||
my $rt_value = $node->stop(); | ||
$rt_value = $node->start(); | ||
ok($rt_value == 1, "Restart Server"); | ||
|
||
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_tde;', extra_params => ['-a']); | ||
ok($cmdret == 0, "CREATE PGTDE EXTENSION"); | ||
PGTDE::append_to_file($stdout); | ||
|
||
$rt_value = $node->psql('postgres', "SELECT pg_tde_add_key_provider_vault_v2('vault-provider', json_object( 'type' VALUE 'remote', 'url' VALUE 'http://localhost:8888/token' ), json_object( 'type' VALUE 'remote', 'url' VALUE 'http://localhost:8888/url' ), to_json('secret'::text), NULL);", extra_params => ['-a']); | ||
$rt_value = $node->psql('postgres', "SELECT pg_tde_set_principal_key('test-db-principal-key','vault-provider');", extra_params => ['-a']); | ||
|
||
$stdout = $node->safe_psql('postgres', 'CREATE TABLE test_enc2(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING pg_tde_basic;', extra_params => ['-a']); | ||
PGTDE::append_to_file($stdout); | ||
|
||
$stdout = $node->safe_psql('postgres', 'INSERT INTO test_enc2 (k) VALUES (5),(6);', extra_params => ['-a']); | ||
PGTDE::append_to_file($stdout); | ||
|
||
$stdout = $node->safe_psql('postgres', 'SELECT * FROM test_enc2 ORDER BY id ASC;', extra_params => ['-a']); | ||
PGTDE::append_to_file($stdout); | ||
|
||
# Restart the server | ||
PGTDE::append_to_file("-- server restart"); | ||
$rt_value = $node->stop(); | ||
$rt_value = $node->start(); | ||
|
||
$stdout = $node->safe_psql('postgres', 'SELECT * FROM test_enc2 ORDER BY id ASC;', extra_params => ['-a']); | ||
PGTDE::append_to_file($stdout); | ||
|
||
$stdout = $node->safe_psql('postgres', 'DROP TABLE test_enc2;', extra_params => ['-a']); | ||
PGTDE::append_to_file($stdout); | ||
|
||
# DROP EXTENSION | ||
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_tde;', extra_params => ['-a']); | ||
ok($cmdret == 0, "DROP PGTDE EXTENSION"); | ||
PGTDE::append_to_file($stdout); | ||
# Stop the server | ||
$node->stop(); | ||
|
||
system("kill $pid"); | ||
|
||
# compare the expected and out file | ||
my $compare = PGTDE->compare_results(); | ||
|
||
# Test/check if expected and result/out file match. If Yes, test passes. | ||
is($compare,0,"Compare Files: $PGTDE::expected_filename_with_path and $PGTDE::out_filename_with_path files."); | ||
|
||
# Done testing for this testcase file. | ||
done_testing(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
CREATE EXTENSION pg_tde; | ||
CREATE TABLE test_enc2(id SERIAL,k INTEGER,PRIMARY KEY (id)) USING pg_tde_basic; | ||
INSERT INTO test_enc2 (k) VALUES (5),(6); | ||
SELECT * FROM test_enc2 ORDER BY id ASC; | ||
1|5 | ||
2|6 | ||
-- server restart | ||
SELECT * FROM test_enc2 ORDER BY id ASC; | ||
1|5 | ||
2|6 | ||
DROP TABLE test_enc2; | ||
DROP EXTENSION pg_tde; |