Add role membership workflow handlers

This commit is contained in:
Tomaž Jerman
2021-07-30 10:25:10 +02:00
parent 8ccaa76d87
commit 3f36a0f865
13 changed files with 1311 additions and 2 deletions
+50
View File
@@ -0,0 +1,50 @@
package workflows
import (
"context"
"testing"
autTypes "github.com/cortezaproject/corteza-server/automation/types"
sysTypes "github.com/cortezaproject/corteza-server/system/types"
"github.com/stretchr/testify/require"
)
func Test0003_role_members(t *testing.T) {
var (
ctx = superUser(context.Background())
req = require.New(t)
)
req.NoError(defStore.TruncateRoleMembers(ctx))
req.NoError(defStore.TruncateUsers(ctx))
req.NoError(defStore.TruncateRoles(ctx))
loadScenario(ctx, t)
var (
aux = struct {
UsersPre_r1 sysTypes.UserSet
TotalPre_r1 uint64
UsersPre_r2 sysTypes.UserSet
TotalPre_r2 uint64
UsersPost_r1 sysTypes.UserSet
TotalPost_r1 uint64
UsersPost_r2 sysTypes.UserSet
TotalPost_r2 uint64
}{}
vars, _ = mustExecWorkflow(ctx, t, "role-members", autTypes.WorkflowExecParams{})
)
req.NoError(vars.Decode(&aux))
req.Len(aux.UsersPre_r1, 1)
req.Equal(uint64(1), aux.TotalPre_r1)
req.Len(aux.UsersPre_r2, 1)
req.Equal(uint64(1), aux.TotalPre_r2)
req.Len(aux.UsersPost_r1, 0)
req.Equal(uint64(0), aux.TotalPost_r1)
req.Len(aux.UsersPost_r2, 1)
req.Equal(uint64(1), aux.TotalPost_r2)
}
@@ -0,0 +1,58 @@
package workflows
import (
"context"
"testing"
autTypes "github.com/cortezaproject/corteza-server/automation/types"
sysTypes "github.com/cortezaproject/corteza-server/system/types"
"github.com/stretchr/testify/require"
)
func Test0004_user_membership(t *testing.T) {
var (
ctx = superUser(context.Background())
req = require.New(t)
)
req.NoError(defStore.TruncateRoleMembers(ctx))
req.NoError(defStore.TruncateUsers(ctx))
req.NoError(defStore.TruncateRoles(ctx))
loadScenario(ctx, t)
var (
aux = struct {
RolesPre_u1 sysTypes.RoleSet
TotalPre_u1 uint64
RolesPre_u2 sysTypes.RoleSet
TotalPre_u2 uint64
MemberPre_u1 bool
MemberPre_u2 bool
RolesPost_u1 sysTypes.RoleSet
TotalPost_u1 uint64
RolesPost_u2 sysTypes.RoleSet
TotalPost_u2 uint64
MemberPost_u1 bool
MemberPost_u2 bool
}{}
vars, _ = mustExecWorkflow(ctx, t, "user-membership", autTypes.WorkflowExecParams{})
)
req.NoError(vars.Decode(&aux))
req.Len(aux.RolesPre_u1, 2)
req.Equal(uint64(2), aux.TotalPre_u1)
req.True(aux.MemberPre_u1)
req.Len(aux.RolesPre_u2, 0)
req.Equal(uint64(0), aux.TotalPre_u2)
req.False(aux.MemberPre_u2)
req.Len(aux.RolesPost_u1, 1)
req.Equal(uint64(1), aux.TotalPost_u1)
req.False(aux.MemberPost_u1)
req.Len(aux.RolesPost_u2, 0)
req.Equal(uint64(0), aux.TotalPost_u2)
req.False(aux.MemberPost_u2)
}
@@ -0,0 +1,7 @@
users:
u1: u1@example.tld
u2: u2@example.tld
roles:
r1: Role1
r2: Role2
@@ -0,0 +1,74 @@
workflows:
role-members:
enabled: true
trace: true
triggers:
- enabled: true
stepID: 10
steps:
# Adding membership
- stepID: 10
kind: function
ref: rolesAddMember
arguments:
- { target: role, type: Handle, value: r1 }
- { target: user, type: Handle, value: u1 }
- stepID: 11
kind: function
ref: rolesAddMember
arguments:
- { target: role, type: Handle, value: r2 }
- { target: user, type: Handle, value: u1 }
# Get current state
- stepID: 20
kind: function
ref: rolesSearchMembers
arguments:
- { target: lookup, type: Handle, value: r1 }
results:
- { target: usersPre_r1, expr: "users" }
- { target: totalPre_r1, expr: "total" }
- stepID: 21
kind: function
ref: rolesSearchMembers
arguments:
- { target: lookup, type: Handle, value: r2 }
results:
- { target: usersPre_r2, expr: "users" }
- { target: totalPre_r2, expr: "total" }
# Removing membership
- stepID: 30
kind: function
ref: rolesRemoveMember
arguments:
- { target: role, type: Handle, value: r1 }
- { target: user, type: Handle, value: u1 }
# Get final state
- stepID: 40
kind: function
ref: rolesSearchMembers
arguments:
- { target: lookup, type: Handle, value: r1 }
results:
- { target: usersPost_r1, expr: "users" }
- { target: totalPost_r1, expr: "total" }
- stepID: 41
kind: function
ref: rolesSearchMembers
arguments:
- { target: lookup, type: Handle, value: r2 }
results:
- { target: usersPost_r2, expr: "users" }
- { target: totalPost_r2, expr: "total" }
paths:
- { parentID: 10, childID: 11 }
- { parentID: 11, childID: 20 }
- { parentID: 20, childID: 21 }
- { parentID: 21, childID: 30 }
- { parentID: 30, childID: 40 }
- { parentID: 40, childID: 41 }
@@ -0,0 +1,7 @@
users:
u1: u1@example.tld
u2: u2@example.tld
roles:
r1: Role1
r2: Role2
@@ -0,0 +1,115 @@
workflows:
user-membership:
enabled: true
trace: true
triggers:
- enabled: true
stepID: 10
steps:
# Adding membership
- stepID: 10
kind: function
ref: rolesAddMember
arguments:
- { target: role, type: Handle, value: r1 }
- { target: user, type: Handle, value: u1 }
- stepID: 11
kind: function
ref: rolesAddMember
arguments:
- { target: role, type: Handle, value: r2 }
- { target: user, type: Handle, value: u1 }
# Get current state
- stepID: 20
kind: function
ref: usersSearchMembership
arguments:
- { target: lookup, type: Handle, value: u1 }
results:
- { target: rolesPre_u1, expr: "roles" }
- { target: totalPre_u1, expr: "total" }
- stepID: 21
kind: function
ref: usersSearchMembership
arguments:
- { target: lookup, type: Handle, value: u2 }
results:
- { target: rolesPre_u2, expr: "roles" }
- { target: totalPre_u2, expr: "total" }
- stepID: 22
kind: function
ref: usersCheckMembership
arguments:
- { target: user, type: Handle, value: u1 }
- { target: role, type: Handle, value: r1 }
results:
- { target: memberPre_u1, expr: "member" }
- stepID: 23
kind: function
ref: usersCheckMembership
arguments:
- { target: user, type: Handle, value: u2 }
- { target: role, type: Handle, value: r1 }
results:
- { target: memberPre_u2, expr: "member" }
# Removing membership
- stepID: 30
kind: function
ref: rolesRemoveMember
arguments:
- { target: role, type: Handle, value: r1 }
- { target: user, type: Handle, value: u1 }
# Get final state
- stepID: 40
kind: function
ref: usersSearchMembership
arguments:
- { target: lookup, type: Handle, value: u1 }
results:
- { target: rolesPost_u1, expr: "roles" }
- { target: totalPost_u1, expr: "total" }
- stepID: 41
kind: function
ref: usersSearchMembership
arguments:
- { target: lookup, type: Handle, value: u2 }
results:
- { target: rolesPost_u2, expr: "roles" }
- { target: totalPost_u2, expr: "total" }
- stepID: 42
kind: function
ref: usersCheckMembership
arguments:
- { target: user, type: Handle, value: u1 }
- { target: role, type: Handle, value: r1 }
results:
- { target: memberPost_u1, expr: "member" }
- stepID: 43
kind: function
ref: usersCheckMembership
arguments:
- { target: user, type: Handle, value: u2 }
- { target: role, type: Handle, value: r1 }
results:
- { target: memberPost_u2, expr: "member" }
paths:
- { parentID: 10, childID: 11 }
- { parentID: 11, childID: 20 }
- { parentID: 20, childID: 21 }
- { parentID: 21, childID: 22 }
- { parentID: 22, childID: 23 }
- { parentID: 23, childID: 30 }
- { parentID: 30, childID: 40 }
- { parentID: 40, childID: 41 }
- { parentID: 41, childID: 42 }
- { parentID: 42, childID: 43 }