Files
threshold/internal/iam/testing_test.go
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

232 lines
6.8 KiB
Go
Raw Normal View History

2020-08-10 17:15:02 -04:00
// Copyright (c) HashiCorp, Inc.
2023-02-02 17:15:17 -08:00
// SPDX-License-Identifier: BUSL-1.1
2020-05-27 18:16:43 -04:00
package iam
import (
2020-05-31 19:55:56 -04:00
"strings"
2020-05-27 18:16:43 -04:00
"testing"
2020-08-10 17:15:02 -04:00
"github.com/hashicorp/boundary/internal/db"
2020-05-27 18:16:43 -04:00
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
2020-05-27 18:16:43 -04:00
)
2020-05-31 19:55:56 -04:00
func Test_testOrg(t *testing.T) {
assert := assert.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
2020-05-31 19:55:56 -04:00
id := testId(t)
2020-08-19 16:47:18 -04:00
org := testOrg(t, repo, id, id)
2020-05-31 19:55:56 -04:00
assert.Equal(id, org.Name)
assert.Equal(id, org.Description)
assert.NotEmpty(org.PublicId)
}
2020-06-18 14:53:11 -04:00
func Test_testProj(t *testing.T) {
assert := assert.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
2020-06-18 14:53:11 -04:00
id := testId(t)
2020-08-19 16:47:18 -04:00
org := testOrg(t, repo, id, id)
proj := testProject(t, repo, org.PublicId, WithName(id), WithDescription(id))
2020-06-18 14:53:11 -04:00
assert.Equal(id, proj.Name)
assert.Equal(id, proj.Description)
assert.NotEmpty(proj.PublicId)
}
2020-05-31 19:55:56 -04:00
func Test_testId(t *testing.T) {
assert := assert.New(t)
id := testId(t)
assert.NotEmpty(id)
}
func Test_testPublicId(t *testing.T) {
assert, require := assert.New(t), require.New(t)
2020-05-31 19:55:56 -04:00
id := testPublicId(t, "test")
require.NotEmpty(id)
2020-05-31 19:55:56 -04:00
assert.True(strings.HasPrefix(id, "test_"))
}
2020-05-27 18:16:43 -04:00
func Test_TestScopes(t *testing.T) {
assert, require := assert.New(t), require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, prj := TestScopes(t, repo)
2020-05-27 18:16:43 -04:00
require.NotNil(org)
2020-05-27 18:16:43 -04:00
assert.NotEmpty(org.GetPublicId())
require.NotNil(prj)
2020-05-27 18:16:43 -04:00
assert.NotEmpty(prj.GetPublicId())
}
2020-08-19 16:47:18 -04:00
func Test_TestRepo(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
require.NotNil(repo)
repo = TestRepo(t, conn, wrapper)
require.NotNil(repo)
}
2020-06-04 20:05:08 -04:00
func Test_TestUser(t *testing.T) {
assert, require := assert.New(t), require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, _ := TestScopes(t, repo)
2020-06-04 20:05:08 -04:00
require.NotNil(org)
2020-06-04 20:05:08 -04:00
assert.NotEmpty(org.GetPublicId())
2020-08-19 16:47:18 -04:00
user := TestUser(t, repo, org.PublicId)
require.NotNil(user)
2020-06-04 20:05:08 -04:00
assert.NotEmpty(user.PublicId)
}
2020-06-15 12:42:08 -04:00
func Test_TestRole(t *testing.T) {
assert, require := assert.New(t), require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
2020-06-15 12:42:08 -04:00
id := testId(t)
2020-08-19 16:47:18 -04:00
org, proj := TestScopes(t, repo)
2020-06-15 12:42:08 -04:00
role := TestRole(t, conn, org.PublicId, WithDescription(id), WithName(id))
require.NotNil(role)
assert.Equal(id, role.Description)
assert.Equal(id, role.Name)
assert.NotEmpty(role.PublicId)
projRole := TestRole(t, conn, proj.PublicId)
require.NotNil(projRole)
assert.NotEmpty(projRole.PublicId)
}
2020-07-10 15:46:26 -04:00
func Test_TestRoleGrant(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
_, proj := TestScopes(t, repo)
2020-07-10 15:46:26 -04:00
projRole := TestRole(t, conn, proj.PublicId)
grant := TestRoleGrant(t, conn, projRole.PublicId, "type=*;actions=*;ids=*")
2020-07-10 15:46:26 -04:00
require.NotNil(grant)
require.Equal(projRole.PublicId, grant.RoleId)
require.Equal("type=*;actions=*;ids=*", grant.RawGrant)
require.Equal("ids=*;type=*;actions=*", grant.CanonicalGrant)
2020-07-10 15:46:26 -04:00
}
func Test_TestUserRole(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, proj := TestScopes(t, repo)
org2, proj2 := TestScopes(t, repo)
2020-07-10 15:46:26 -04:00
orgRole := TestRole(t, conn, org.PublicId)
projRole := TestRole(t, conn, proj.PublicId)
2020-07-10 15:46:26 -04:00
org2Role := TestRole(t, conn, org2.PublicId)
proj2Role := TestRole(t, conn, proj2.PublicId)
2020-08-19 16:47:18 -04:00
user := TestUser(t, repo, org.PublicId)
2020-07-10 15:46:26 -04:00
userRole := TestUserRole(t, conn, orgRole.PublicId, user.PublicId)
require.NotNil(userRole)
require.Equal(orgRole.PublicId, userRole.RoleId)
require.Equal(user.PublicId, userRole.PrincipalId)
2020-07-10 15:46:26 -04:00
userRole = TestUserRole(t, conn, projRole.PublicId, user.PublicId)
require.NotNil(userRole)
require.Equal(projRole.PublicId, userRole.RoleId)
require.Equal(user.PublicId, userRole.PrincipalId)
2020-07-10 15:46:26 -04:00
userRole = TestUserRole(t, conn, org2Role.PublicId, user.PublicId)
require.NotNil(userRole)
require.Equal(org2Role.PublicId, userRole.RoleId)
require.Equal(user.PublicId, userRole.PrincipalId)
userRole = TestUserRole(t, conn, proj2Role.PublicId, user.PublicId)
require.NotNil(userRole)
require.Equal(proj2Role.PublicId, userRole.RoleId)
require.Equal(user.PublicId, userRole.PrincipalId)
}
func Test_TestGroupRole(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, proj := TestScopes(t, repo)
org2, proj2 := TestScopes(t, repo)
2020-07-10 15:46:26 -04:00
orgRole := TestRole(t, conn, org.PublicId)
orgGroup := TestGroup(t, conn, org.PublicId)
2020-07-10 15:46:26 -04:00
org2Group := TestGroup(t, conn, org2.PublicId)
projRole := TestRole(t, conn, proj.PublicId)
projGroup := TestGroup(t, conn, proj.PublicId)
2020-07-10 15:46:26 -04:00
proj2Group := TestGroup(t, conn, proj2.PublicId)
2020-07-10 15:46:26 -04:00
groupRole := TestGroupRole(t, conn, orgRole.PublicId, orgGroup.PublicId)
require.NotNil(groupRole)
require.Equal(orgRole.PublicId, groupRole.RoleId)
require.Equal(orgGroup.PublicId, groupRole.PrincipalId)
2020-07-10 15:46:26 -04:00
groupRole = TestGroupRole(t, conn, projRole.PublicId, projGroup.PublicId)
require.NotNil(groupRole)
require.Equal(projRole.PublicId, groupRole.RoleId)
require.Equal(projGroup.PublicId, groupRole.PrincipalId)
2020-07-10 15:46:26 -04:00
groupRole = TestGroupRole(t, conn, orgRole.PublicId, org2Group.PublicId)
require.NotNil(groupRole)
require.Equal(orgRole.PublicId, groupRole.RoleId)
require.Equal(org2Group.PublicId, groupRole.PrincipalId)
groupRole = TestGroupRole(t, conn, projRole.PublicId, proj2Group.PublicId)
require.NotNil(groupRole)
require.Equal(projRole.PublicId, groupRole.RoleId)
require.Equal(proj2Group.PublicId, groupRole.PrincipalId)
}
2020-07-10 19:01:23 -04:00
func Test_TestGroupMember(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
2020-08-19 16:47:18 -04:00
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, proj := TestScopes(t, repo)
2020-07-10 19:01:23 -04:00
og := TestGroup(t, conn, org.PublicId)
pg := TestGroup(t, conn, proj.PublicId)
2020-08-19 16:47:18 -04:00
u := TestUser(t, repo, org.PublicId)
2020-07-10 19:01:23 -04:00
gm := TestGroupMember(t, conn, og.PublicId, u.PublicId)
require.NotNil(gm)
require.Equal(og.PublicId, gm.GroupId)
require.Equal(u.PublicId, gm.MemberId)
gm = TestGroupMember(t, conn, pg.PublicId, u.PublicId)
require.NotNil(gm)
require.Equal(pg.PublicId, gm.GroupId)
require.Equal(u.PublicId, gm.MemberId)
}
func Test_testAccount(t *testing.T) {
require := require.New(t)
conn, _ := db.TestSetup(t, "postgres")
wrapper := db.TestWrapper(t)
repo := TestRepo(t, conn, wrapper)
org, _ := TestScopes(t, repo)
authMethodId := testAuthMethod(t, conn, org.PublicId)
acct := testAccount(t, conn, org.PublicId, authMethodId, "")
require.Equal(acct.ScopeId, org.PublicId)
}