Skip to content

Commit 89a729c

Browse files
committed
Some tests
1 parent 98bfdd8 commit 89a729c

File tree

3 files changed

+55
-6
lines changed

3 files changed

+55
-6
lines changed

tests/ruby/auth_spec.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# frozen_string_literal: true
2+
require_relative 'spec_helper'
3+
4+
5+
describe "Authentication" do
6+
describe "multiple secrets configured" do
7+
let(:secrets) { ["one_secret", "two_secret"] }
8+
let(:processes) { Helpers::Pgcat.three_shard_setup("sharded_db", 5, pool_mode="transaction", lb_mode="random", log_level="info", secrets=["one_secret", "two_secret"]) }
9+
10+
after do
11+
processes.all_databases.map(&:reset)
12+
processes.pgcat.shutdown
13+
end
14+
15+
it "can connect using all secrets and postgres password" do
16+
secrets.push("sharding_user").each do |secret|
17+
conn = PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user", password=secret))
18+
conn.exec("SELECT current_user")
19+
end
20+
end
21+
end
22+
23+
describe "no secrets configured" do
24+
let(:secrets) { [] }
25+
let(:processes) { Helpers::Pgcat.three_shard_setup("sharded_db", 5, pool_mode="transaction", lb_mode="random", log_level="info") }
26+
27+
after do
28+
processes.all_databases.map(&:reset)
29+
processes.pgcat.shutdown
30+
end
31+
32+
it "can connect using only the password" do
33+
conn = PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user"))
34+
conn.exec("SELECT current_user")
35+
36+
expect { PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user", password="secret_one")) }.to raise_error PG::ConnectionBad
37+
end
38+
end
39+
end

tests/ruby/helpers/pgcat_helper.rb

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,26 @@
55

66
module Helpers
77
module Pgcat
8-
def self.three_shard_setup(pool_name, pool_size, pool_mode="transaction", lb_mode="random", log_level="info")
8+
def self.three_shard_setup(pool_name, pool_size, pool_mode="transaction", lb_mode="random", log_level="info", secrets=nil)
99
user = {
1010
"password" => "sharding_user",
1111
"pool_size" => pool_size,
1212
"statement_timeout" => 0,
13-
"username" => "sharding_user"
13+
"username" => "sharding_user",
1414
}
1515

16+
if !secrets.nil?
17+
user["secrets"] = secrets
18+
end
19+
1620
pgcat = PgcatProcess.new(log_level)
1721
primary0 = PgInstance.new(5432, user["username"], user["password"], "shard0")
1822
primary1 = PgInstance.new(7432, user["username"], user["password"], "shard1")
1923
primary2 = PgInstance.new(8432, user["username"], user["password"], "shard2")
2024

2125
pgcat_cfg = pgcat.current_config
2226
pgcat_cfg["pools"] = {
23-
"#{pool_name}" => {
27+
"#{pool_name}" => {
2428
"default_role" => "any",
2529
"pool_mode" => pool_mode,
2630
"load_balancing_mode" => lb_mode,
@@ -34,8 +38,14 @@ def self.three_shard_setup(pool_name, pool_size, pool_mode="transaction", lb_mod
3438
"2" => { "database" => "shard2", "servers" => [["localhost", primary2.port.to_s, "primary"]] },
3539
},
3640
"users" => { "0" => user }
37-
}
41+
},
3842
}
43+
44+
if !secrets.nil?
45+
pgcat_cfg["general"]["tls_certificate"] = "../../.circleci/server.cert"
46+
pgcat_cfg["general"]["tls_private_key"] = "../../.circleci/server.key"
47+
end
48+
3949
pgcat.update_config(pgcat_cfg)
4050

4151
pgcat.start

tests/ruby/helpers/pgcat_process.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ def admin_connection_string
108108
"postgresql://#{username}:#{password}@0.0.0.0:#{@port}/pgcat"
109109
end
110110

111-
def connection_string(pool_name, username)
111+
def connection_string(pool_name, username, password=nil)
112112
cfg = current_config
113113

114114
user_idx, user_obj = cfg["pools"][pool_name]["users"].detect { |k, user| user["username"] == username }
115-
password = user_obj["password"]
115+
password = if password.nil? then user_obj["password"] else password end
116116

117117
"postgresql://#{username}:#{password}@0.0.0.0:#{@port}/#{pool_name}"
118118
end

0 commit comments

Comments
 (0)