mirror of
https://github.com/LukeHagar/sailpoint-cli.git
synced 2025-12-06 04:21:15 +00:00
157 lines
3.4 KiB
Go
157 lines
3.4 KiB
Go
// Copyright (c) 2021, SailPoint Technologies, Inc. All rights reserved.
|
|
|
|
package transform
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"math/rand"
|
|
"os"
|
|
|
|
PATH "path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/charmbracelet/log"
|
|
sailpointsdk "github.com/sailpoint-oss/golang-sdk/v3"
|
|
"github.com/sailpoint-oss/sailpoint-cli/internal/config"
|
|
"github.com/sailpoint-oss/sailpoint-cli/internal/util"
|
|
)
|
|
|
|
var (
|
|
createTemplate = []byte(`{
|
|
"attributes": {
|
|
"substring": "admin_"
|
|
},
|
|
"type": "indexOf",
|
|
"name": "Test Index Of Transform"
|
|
}`)
|
|
|
|
path = "test_data"
|
|
createFile = "test_create.json"
|
|
updateFile = "test_update.json"
|
|
)
|
|
|
|
func init() {
|
|
rand.Seed(time.Now().UnixNano())
|
|
}
|
|
|
|
var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
|
|
func randSeq(n int) string {
|
|
b := make([]rune, n)
|
|
for i := range b {
|
|
b[i] = letters[rand.Intn(len(letters))]
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func SaveTransform(fileName string, transform map[string]interface{}) error {
|
|
file, err := os.OpenFile((PATH.Join(path, fileName)), os.O_RDWR|os.O_CREATE, 0666)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
|
|
createString, err := json.Marshal(transform)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Info("Saving Transform", "Indented", string(createString))
|
|
|
|
_, err = file.Write(createString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = config.InitConfig()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
func TestNewCRUDCmd(t *testing.T) {
|
|
|
|
var transform sailpointsdk.Transform
|
|
|
|
err := json.Unmarshal([]byte(createTemplate), &transform)
|
|
if err != nil {
|
|
t.Fatalf("Error unmarshalling template: %v", err)
|
|
}
|
|
|
|
transformName := randSeq(16)
|
|
|
|
createTransform := make(map[string]interface{})
|
|
createTransform["name"] = transformName
|
|
createTransform["type"] = transform.Type
|
|
createTransform["attributes"] = transform.Attributes
|
|
|
|
t.Log(util.PrettyPrint(createTransform))
|
|
|
|
// Make sure the output dir exists first
|
|
err = os.MkdirAll(path, os.ModePerm)
|
|
if err != nil {
|
|
t.Fatalf("Error Creating Folders: %v", err)
|
|
}
|
|
|
|
err = SaveTransform(createFile, createTransform)
|
|
if err != nil {
|
|
t.Fatalf("Unable to save test data: %v", err)
|
|
}
|
|
|
|
// ctrl := gomock.NewController(t)
|
|
// defer ctrl.Finish()
|
|
|
|
createCMD := newCreateCommand()
|
|
|
|
createBuffer := new(bytes.Buffer)
|
|
createCMD.SetOut(createBuffer)
|
|
createCMD.Flags().Set("file", PATH.Join(path, createFile))
|
|
|
|
err = createCMD.Execute()
|
|
if err != nil {
|
|
t.Fatalf("TestNewCreateCmd: Unable to execute the command successfully: %v", err)
|
|
}
|
|
|
|
transformID := string(createBuffer.String())
|
|
t.Log(transformID)
|
|
|
|
Attributes := make(map[string]string)
|
|
Attributes["substring"] = randSeq(24)
|
|
|
|
updateTransform := make(map[string]interface{})
|
|
updateTransform["attributes"] = Attributes
|
|
updateTransform["name"] = transformName
|
|
updateTransform["type"] = transform.Type
|
|
updateTransform["id"] = transformID
|
|
|
|
t.Log(util.PrettyPrint(updateTransform))
|
|
|
|
err = SaveTransform(updateFile, updateTransform)
|
|
if err != nil {
|
|
t.Fatalf("Unable to save test data: %v", err)
|
|
}
|
|
|
|
cmd := newUpdateCommand()
|
|
|
|
cmd.Flags().Set("file", PATH.Join(path, updateFile))
|
|
|
|
err = cmd.Execute()
|
|
if err != nil {
|
|
t.Fatalf("error execute cmd: %v", err)
|
|
}
|
|
|
|
deleteCMD := newDeleteCommand()
|
|
|
|
deleteBuffer := new(bytes.Buffer)
|
|
deleteCMD.SetOut(deleteBuffer)
|
|
deleteCMD.SetArgs([]string{transformID})
|
|
|
|
err = deleteCMD.Execute()
|
|
if err != nil {
|
|
t.Fatalf("TestNewDeleteCmd: Unable to execute the command successfully: %v", err)
|
|
}
|
|
}
|