MCPcopy Create free account
hub / github.com/CrunchyData/postgres-operator / TestEnableInPostgreSQL

Function TestEnableInPostgreSQL

internal/pgbouncer/postgres_test.go:119–184  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

117}
118
119func TestEnableInPostgreSQL(t *testing.T) {
120 expected := errors.New("whoops")
121 secret := new(corev1.Secret)
122 secret.Data = map[string][]byte{
123 "pgbouncer-verifier": []byte("digest$and==:whatnot"),
124 }
125
126 exec := func(
127 _ context.Context, stdin io.Reader, stdout, stderr io.Writer, command ...string,
128 ) error {
129 assert.Assert(t, stdout != nil, "should capture stdout")
130 assert.Assert(t, stderr != nil, "should capture stderr")
131 assert.Assert(t, strings.Contains(strings.Join(command, "\n"),
132 `SELECT datname FROM pg_catalog.pg_database`,
133 ), "expected all databases and templates")
134
135 b, err := io.ReadAll(stdin)
136 assert.NilError(t, err)
137 assert.Equal(t, string(b), strings.TrimSpace(`
138SET client_min_messages = WARNING;
139SET synchronous_commit = LOCAL;
140BEGIN;
141SELECT pg_catalog.format('CREATE ROLE %I NOLOGIN', :'username')
142 WHERE NOT EXISTS (SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = :'username')
143\gexec
144SELECT pg_catalog.format('REVOKE ALL PRIVILEGES ON SCHEMA %I FROM %I', nspname, :'username')
145 FROM pg_catalog.pg_namespace
146 WHERE pg_catalog.has_schema_privilege(:'username', oid, 'CREATE, USAGE')
147 AND nspname NOT IN ('pg_catalog', :'namespace')
148\gexec
149CREATE SCHEMA IF NOT EXISTS :"namespace";
150REVOKE ALL PRIVILEGES
151 ON SCHEMA :"namespace" FROM PUBLIC, :"username";
152 GRANT USAGE
153 ON SCHEMA :"namespace" TO :"username";
154CREATE OR REPLACE FUNCTION :"namespace".get_auth(username TEXT)
155RETURNS TABLE(username TEXT, password TEXT) AS E'
156 SELECT rolname::TEXT, rolpassword::TEXT
157 FROM pg_catalog.pg_authid
158 WHERE pg_authid.rolname = $1
159 AND pg_authid.rolcanlogin
160 AND NOT pg_authid.rolsuper
161 AND NOT pg_authid.rolreplication
162 AND pg_authid.rolname <> E''_crunchypgbouncer''
163 AND (pg_authid.rolvaliduntil IS NULL OR pg_authid.rolvaliduntil >= CURRENT_TIMESTAMP)'
164LANGUAGE SQL STABLE SECURITY DEFINER;
165REVOKE ALL PRIVILEGES
166 ON FUNCTION :"namespace".get_auth(username TEXT) FROM PUBLIC, :"username";
167 GRANT EXECUTE
168 ON FUNCTION :"namespace".get_auth(username TEXT) TO :"username";
169ALTER ROLE :"username" SET search_path TO :'namespace';
170ALTER ROLE :"username" LOGIN PASSWORD :'verifier';
171COMMIT;`))
172
173 gomega.NewWithT(t).Expect(command).To(gomega.ContainElements(
174 `--set=namespace=pgbouncer`,
175 `--set=username=_crunchypgbouncer`,
176 `--set=verifier=digest$and==:whatnot`,

Callers

nothing calls this directly

Calls 2

EnableInPostgreSQLFunction · 0.70
EqualMethod · 0.45

Tested by

no test coverage detected