Files
threshold/internal/auth/db_test.go
T

166 lines
3.7 KiB
Go
Raw Normal View History

2020-06-19 13:10:05 -04:00
package auth
import (
"context"
2020-06-19 13:10:05 -04:00
"testing"
2020-08-10 17:15:02 -04:00
"github.com/hashicorp/boundary/internal/db"
"github.com/hashicorp/boundary/internal/iam"
2020-06-19 13:10:05 -04:00
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDB_AuthMethodIDTrigger(t *testing.T) {
const (
createTable = `
create table if not exists test_auth_method (
2020-06-22 13:54:55 -04:00
public_id wt_public_id primary key,
2021-04-08 20:54:32 -04:00
scope_id wt_public_id not null references iam_scope(public_id),
name wt_name
2020-06-19 13:10:05 -04:00
);
`
insert = `
insert into test_auth_method
2020-06-22 13:54:55 -04:00
(public_id, scope_id)
values
($1, $2);
2020-06-19 13:10:05 -04:00
`
addTriggers = `
create trigger
insert_auth_method_subtype
before
insert on test_auth_method
for each row execute procedure insert_auth_method_subtype();
`
baseTableQuery = `
2020-06-22 13:54:55 -04:00
select count(*) from auth_method where public_id = $1;
2020-06-19 13:10:05 -04:00
`
testTableQuery = `
2020-06-22 13:54:55 -04:00
select count(*) from test_auth_method where public_id = $1;
2020-06-19 13:10:05 -04:00
`
)
assert, require := assert.New(t), require.New(t)
ctx := context.Background()
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
rw := db.New(conn)
_, err := rw.Exec(ctx, createTable, nil)
2020-06-19 13:10:05 -04:00
require.NoError(err)
_, err = rw.Exec(ctx, addTriggers, nil)
2020-06-19 13:10:05 -04:00
require.NoError(err)
2020-08-19 16:47:18 -04:00
org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper))
2020-06-19 13:10:05 -04:00
id := "l1Ocw0TpHn800CekIxIXlmQqRDgFDfYl"
inserted, err := rw.Exec(ctx, insert, []interface{}{id, org.GetPublicId()})
2020-06-19 13:10:05 -04:00
require.NoError(err)
require.Equal(1, inserted)
2020-06-19 13:10:05 -04:00
type c struct {
Count int
}
var count c
rows, err := rw.Query(ctx, baseTableQuery, []interface{}{id})
2020-06-19 13:10:05 -04:00
require.NoError(err)
defer rows.Close()
for rows.Next() {
err := rw.ScanRows(rows, &count)
require.NoError(err)
}
assert.Equal(1, count.Count)
count.Count = 0
rows, err = rw.Query(ctx, testTableQuery, []interface{}{id})
2020-06-19 13:10:05 -04:00
require.NoError(err)
defer rows.Close()
for rows.Next() {
err := rw.ScanRows(rows, &count)
require.NoError(err)
}
assert.Equal(1, count.Count)
2020-06-19 13:10:05 -04:00
}
func TestDB_AuthAccountIDTrigger(t *testing.T) {
const (
createTable = `
create table if not exists test_auth_account (
2020-06-22 13:54:55 -04:00
public_id wt_public_id primary key,
auth_method_id wt_public_id not null,
2020-06-22 13:54:55 -04:00
scope_id wt_public_id not null
2020-06-19 13:10:05 -04:00
);
`
insert = `
insert into test_auth_account
(public_id, auth_method_id)
values
($1, $2);
2020-06-19 13:10:05 -04:00
`
addTriggers = `
create trigger
insert_auth_account_subtype
before
insert on test_auth_account
for each row execute procedure insert_auth_account_subtype();
`
baseTableQuery = `
2020-06-22 13:54:55 -04:00
select count(*) from auth_account where public_id = $1;
2020-06-19 13:10:05 -04:00
`
testTableQuery = `
2020-06-22 13:54:55 -04:00
select count(*) from test_auth_account where public_id = $1;
`
insertAuthMethod = `
insert into auth_method
2020-06-22 13:54:55 -04:00
(public_id, scope_id)
values
($1, $2);
2020-06-19 13:10:05 -04:00
`
)
assert, require := assert.New(t), require.New(t)
ctx := context.Background()
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := iam.TestRepo(t, conn, wrapper)
rw := db.New(conn)
_, err := rw.Exec(ctx, createTable, nil)
2020-06-19 13:10:05 -04:00
require.NoError(err)
_, err = rw.Exec(ctx, addTriggers, nil)
2020-06-19 13:10:05 -04:00
require.NoError(err)
2020-08-19 16:47:18 -04:00
org, _ := iam.TestScopes(t, repo)
meth_id := "31Ocw0TpHn800CekIxIXlmQqRDgFDfYl"
_, err = rw.Exec(ctx, insertAuthMethod, []interface{}{meth_id, org.GetPublicId()})
require.NoError(err)
2020-06-19 13:10:05 -04:00
id := "l1Ocw0TpHn800CekIxIXlmQqRDgFDfYl"
_, err = rw.Exec(ctx, insert, []interface{}{id, meth_id})
2020-06-19 13:10:05 -04:00
require.NoError(err)
type c struct {
Count int
}
var count c
rows, err := rw.Query(ctx, baseTableQuery, []interface{}{id})
2020-06-19 13:10:05 -04:00
require.NoError(err)
defer rows.Close()
for rows.Next() {
err := rw.ScanRows(rows, &count)
require.NoError(err)
}
assert.Equal(1, count.Count)
count.Count = 0
rows, err = rw.Query(ctx, testTableQuery, []interface{}{id})
2020-06-19 13:10:05 -04:00
require.NoError(err)
defer rows.Close()
for rows.Next() {
err := rw.ScanRows(rows, &count)
require.NoError(err)
}
assert.Equal(1, count.Count)
2020-06-19 13:10:05 -04:00
}