Skip to content

Commit

Permalink
Create and manage test users (#52)
Browse files Browse the repository at this point in the history
  • Loading branch information
shilgapira authored Oct 6, 2024
1 parent 8619cdf commit 9ef6eb7
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 18 deletions.
48 changes: 31 additions & 17 deletions user/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,35 @@ import (
)

var Flags struct {
LoginID string
UserID string
TenantID string
Email string
Phone string
Name string
Tenants []string
Roles []string
Limit int
Page int
LoginID string
UserID string
TenantID string
Email string
Phone string
Name string
Tenants []string
Roles []string
Limit int
Page int
RedirectURL string
}

// reused in create commands for regular users and test users
var createUse = "create <loginId> [-e email] [-p phone] [-n name] [-t tid,...]"
var createSetup = func(cmd *cobra.Command) {
cmd.Args = cobra.ExactArgs(1)
cmd.Flags().StringVarP(&Flags.Email, "email", "e", "", "the user's email address")
cmd.Flags().StringVarP(&Flags.Phone, "phone", "p", "", "the user's phone number")
cmd.Flags().StringVarP(&Flags.Name, "name", "n", "", "the user's display name")
cmd.Flags().StringSliceVarP(&Flags.Tenants, "tenants", "t", nil, "a comma separated list of tenant ids for the user")
}

func AddCommands(parent *cobra.Command, group *cobra.Group) {
user := shared.MakeGroupCommand(group, "user", "Commands for creating and managing users")
parent.AddCommand(user)

shared.AddCommand(user, Create, "create <loginId> [-e email] [-p phone] [-n name] [-t tid,...]", "Create a new user", func(cmd *cobra.Command) {
cmd.Args = cobra.ExactArgs(1)
cmd.Flags().StringVarP(&Flags.Email, "email", "e", "", "the user's email address")
cmd.Flags().StringVarP(&Flags.Phone, "phone", "p", "", "the user's phone number")
cmd.Flags().StringVarP(&Flags.Name, "name", "n", "", "the user's display name")
cmd.Flags().StringSliceVarP(&Flags.Tenants, "tenants", "t", nil, "a comma separated list of tenant ids for the user")
})
// reused in create user and create test user
shared.AddCommand(user, Create, createUse, "Create a new user", createSetup)

shared.AddCommand(user, Delete, "delete {-l loginId | -u userId}", "Delete a user", func(cmd *cobra.Command) {
cmd.Flags().StringVarP(&Flags.LoginID, "login-id", "l", "", "the user's loginId")
Expand Down Expand Up @@ -88,4 +94,12 @@ func AddCommands(parent *cobra.Command, group *cobra.Group) {
cmd.Flags().StringSliceVarP(&Flags.Roles, "roles", "r", nil, "a comma separated list of role names to remove")
cmd.Flags().StringVarP(&Flags.TenantID, "tenant", "t", "", "update the roles for the user in a specific tenant")
})

test := shared.MakeGroupCommand(nil, "test", "Commands for creating and managing test users")
user.AddCommand(test)

shared.AddCommand(test, CreateTestUser, createUse, "Create a new test user", createSetup)

shared.AddCommand(test, DeleteAllTestUsers, "delete-all", "Delete all existing test users in the project", func(cmd *cobra.Command) {
})
}
12 changes: 11 additions & 1 deletion user/crud.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import (
)

func Create(args []string) error {
return createUser(args, false)
}

func createUser(args []string, test bool) error {
tenants := []*descope.AssociatedTenant{}
for _, tenantID := range Flags.Tenants {
tenants = append(tenants, &descope.AssociatedTenant{TenantID: tenantID})
Expand All @@ -20,7 +24,13 @@ func Create(args []string) error {
u.Name = Flags.Name
u.Tenants = tenants

user, err := shared.Descope.Management.User().Create(context.Background(), args[0], u)
var err error
var user *descope.UserResponse
if test {
user, err = shared.Descope.Management.User().CreateTestUser(context.Background(), args[0], u)
} else {
user, err = shared.Descope.Management.User().Create(context.Background(), args[0], u)
}
if err != nil {
return err
}
Expand Down
20 changes: 20 additions & 0 deletions user/test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package user

import (
"context"

"github.com/descope/descopecli/shared"
)

type enchantedLink struct {
Link string `json:"link,omitempty"`
PendingRef string `json:"pendingRef,omitempty"`
}

func CreateTestUser(args []string) error {
return createUser(args, true)
}

func DeleteAllTestUsers(_ []string) error {
return shared.Descope.Management.User().DeleteAllTestUsers(context.Background())
}

0 comments on commit 9ef6eb7

Please sign in to comment.