mirror of
https://github.com/datarhei/core.git
synced 2025-10-06 00:17:07 +08:00
109 lines
2.2 KiB
Go
109 lines
2.2 KiB
Go
package store
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/datarhei/core/v16/iam/identity"
|
|
"github.com/datarhei/core/v16/iam/policy"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSetPoliciesCommand(t *testing.T) {
|
|
s, err := createStore()
|
|
require.NoError(t, err)
|
|
|
|
identity := identity.User{
|
|
Name: "foobar",
|
|
}
|
|
|
|
err = s.applyCommand(Command{
|
|
Operation: OpAddIdentity,
|
|
Data: CommandAddIdentity{
|
|
Identity: identity,
|
|
},
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, len(s.data.Users.Users))
|
|
require.Equal(t, 0, len(s.data.Policies.Policies))
|
|
|
|
err = s.applyCommand(Command{
|
|
Operation: OpSetPolicies,
|
|
Data: CommandSetPolicies{
|
|
Name: "foobar",
|
|
Policies: []policy.Policy{
|
|
{
|
|
Name: "bla",
|
|
Domain: "bla",
|
|
Resource: "bla",
|
|
Actions: []string{},
|
|
},
|
|
{
|
|
Name: "foo",
|
|
Domain: "foo",
|
|
Resource: "foo",
|
|
Actions: []string{},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, len(s.data.Users.Users))
|
|
require.Equal(t, 2, len(s.data.Policies.Policies["foobar"]))
|
|
}
|
|
|
|
func TestSetPolicies(t *testing.T) {
|
|
s, err := createStore()
|
|
require.NoError(t, err)
|
|
|
|
identity := identity.User{
|
|
Name: "foobar",
|
|
}
|
|
|
|
policies := []policy.Policy{
|
|
{
|
|
Name: "bla",
|
|
Domain: "bla",
|
|
Resource: "bla",
|
|
Actions: []string{},
|
|
},
|
|
{
|
|
Name: "foo",
|
|
Domain: "foo",
|
|
Resource: "foo",
|
|
Actions: []string{},
|
|
},
|
|
}
|
|
|
|
err = s.setPolicies(CommandSetPolicies{
|
|
Name: "foobar",
|
|
Policies: policies,
|
|
})
|
|
require.Error(t, err)
|
|
require.Equal(t, 0, len(s.data.Policies.Policies["foobar"]))
|
|
|
|
err = s.addIdentity(CommandAddIdentity{
|
|
Identity: identity,
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, len(s.data.Users.Users))
|
|
require.Equal(t, 0, len(s.data.Policies.Policies))
|
|
|
|
users := s.IAMIdentityGet("foobar")
|
|
require.NotEmpty(t, users.Users)
|
|
|
|
updatedAt := users.Users[0].UpdatedAt
|
|
|
|
err = s.setPolicies(CommandSetPolicies{
|
|
Name: "foobar",
|
|
Policies: policies,
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, len(s.data.Users.Users))
|
|
require.Equal(t, 2, len(s.data.Policies.Policies["foobar"]))
|
|
|
|
users = s.IAMIdentityGet("foobar")
|
|
require.NotEmpty(t, users.Users)
|
|
|
|
require.False(t, updatedAt.Equal(users.Users[0].UpdatedAt))
|
|
}
|