Skip to content

Commit

Permalink
chore(tests): format pam_tests
Browse files Browse the repository at this point in the history
Signed-off-by: spbsoluble <[email protected]>
  • Loading branch information
spbsoluble committed Sep 9, 2024
1 parent b1c644e commit f4ae3c6
Showing 1 changed file with 134 additions and 103 deletions.
237 changes: 134 additions & 103 deletions cmd/pam_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ package cmd
import (
"encoding/json"
"fmt"
"github.com/stretchr/testify/assert"
"os"
"path"
"path/filepath"
"strconv"
"strings"
"testing"

"github.com/stretchr/testify/assert"
)

func Test_PAMHelpCmd(t *testing.T) {
Expand Down Expand Up @@ -70,10 +71,12 @@ func Test_PAMTypesListCmd(t *testing.T) {
// test
var err error
testCmd.SetArgs([]string{"pam", "types-list"})
output := captureOutput(func() {
err = testCmd.Execute()
assert.NoError(t, err)
})
output := captureOutput(
func() {
err = testCmd.Execute()
assert.NoError(t, err)
},
)

if err != nil {
t.Errorf("failed to list PAM provider types: %v", err)
Expand Down Expand Up @@ -157,10 +160,12 @@ func Test_PAMGetCmd(t *testing.T) {
idInt := int(providerConfig["Id"].(float64))
idStr := strconv.Itoa(idInt)
testCmd.SetArgs([]string{"pam", "get", "--id", idStr})
output := captureOutput(func() {
err := testCmd.Execute()
assert.NoError(t, err)
})
output := captureOutput(
func() {
err := testCmd.Execute()
assert.NoError(t, err)
},
)
var pamProvider interface{}
if err := json.Unmarshal([]byte(output), &pamProvider); err != nil {
t.Fatalf("Error unmarshalling JSON: %v", err)
Expand All @@ -184,10 +189,12 @@ func Test_PAMTypesCreateCmd(t *testing.T) {
randomName := generateRandomUUID()
t.Logf("randomName: %s", randomName)
testCmd.SetArgs([]string{"pam", "types-create", "--repo", "hashicorp-vault-pam", "--name", randomName})
output := captureOutput(func() {
err := testCmd.Execute()
assert.NoError(t, err)
})
output := captureOutput(
func() {
err := testCmd.Execute()
assert.NoError(t, err)
},
)
var createResponse interface{}
if err := json.Unmarshal([]byte(output), &createResponse); err != nil {
t.Log(output)
Expand Down Expand Up @@ -291,10 +298,12 @@ func Test_PAMUpdateCmd(t *testing.T) {
testCmd := RootCmd
// test
testCmd.SetArgs([]string{"pam", "update", "--from-file", updatedFileName})
output := captureOutput(func() {
err := testCmd.Execute()
assert.NoError(t, err)
})
output := captureOutput(
func() {
err := testCmd.Execute()
assert.NoError(t, err)
},
)

var updateResponse interface{}
if err := json.Unmarshal([]byte(output), &updateResponse); err != nil {
Expand Down Expand Up @@ -386,51 +395,59 @@ func testListPamProviders(t *testing.T) ([]interface{}, error) {
var pamProviders []interface{}
var err error

t.Run("Listing PAM provider instances", func(t *testing.T) {
testCmd := RootCmd
// test
testCmd.SetArgs([]string{"pam", "list"})
output = captureOutput(func() {
err = testCmd.Execute()
assert.NoError(t, err)
})

if err != nil {
t.Errorf("failed to list PAM providers: %v", err)
return
}

if err = json.Unmarshal([]byte(output), &pamProviders); err != nil {
t.Fatalf("Error unmarshalling JSON: %v", err)
}
t.Run(
"Listing PAM provider instances", func(t *testing.T) {
testCmd := RootCmd
// test
testCmd.SetArgs([]string{"pam", "list"})
output = captureOutput(
func() {
err = testCmd.Execute()
assert.NoError(t, err)
},
)

if err != nil {
t.Errorf("failed to list PAM providers: %v", err)
return
}

// assert slice is len >= 0
assert.GreaterOrEqual(t, len(pamProviders), 0)
if err = json.Unmarshal([]byte(output), &pamProviders); err != nil {
t.Fatalf("Error unmarshalling JSON: %v", err)
}

if len(pamProviders) > 0 {
for _, p := range pamProviders {
providerConfig := p.(map[string]interface{})
// assert that each p has a name
assert.NotEmpty(t, providerConfig["Name"])
// assert that each p has an ID
assert.NotEmpty(t, providerConfig["Id"])
// assert that each p has a type
assert.NotEmpty(t, providerConfig["ProviderType"])

// Check params is a list of maps
pTypeParams := providerConfig["ProviderType"].(map[string]interface{})["ProviderTypeParams"].([]interface{})
assert.NotEmpty(t, pTypeParams)
assert.GreaterOrEqual(t, len(pTypeParams), 0)
if len(pTypeParams) > 0 {
for _, param := range pTypeParams {
assert.NotEmpty(t, param.(map[string]interface{})["Id"])
assert.NotEmpty(t, param.(map[string]interface{})["Name"])
assert.NotEmpty(t, param.(map[string]interface{})["DataType"])
// assert slice is len >= 0
assert.GreaterOrEqual(t, len(pamProviders), 0)

if len(pamProviders) > 0 {
for _, p := range pamProviders {
providerConfig := p.(map[string]interface{})
// assert that each p has a name
assert.NotEmpty(t, providerConfig["Name"])
// assert that each p has an ID
assert.NotEmpty(t, providerConfig["Id"])
// assert that each p has a type
assert.NotEmpty(t, providerConfig["ProviderType"])

// Check params is a list of maps
pTypeParams := providerConfig["ProviderType"].(map[string]interface{})["ProviderTypeParams"].([]interface{})
assert.NotEmpty(t, pTypeParams)
assert.GreaterOrEqual(t, len(pTypeParams), 0)
if len(pTypeParams) > 0 {
for _, param := range pTypeParams {
assert.NotEmpty(t, param.(map[string]interface{})["Id"])
assert.NotEmpty(t, param.(map[string]interface{})["Name"])
assert.NotEmpty(t, param.(map[string]interface{})["DataType"])
}
}
}
} else {
t.Errorf("0 PAM providers found, cannot test list")
t.Fail()
}
}
})

},
)
if err != nil {
t.Log(output)
return nil, err
Expand All @@ -447,57 +464,65 @@ func testCreatePamProvider(t *testing.T, fileName string, providerName string, a
} else {
testName = fmt.Sprintf("Create PAM provider '%s'", providerName)
}
t.Run(testName, func(t *testing.T) {
testCmd := RootCmd
t.Run(
testName, func(t *testing.T) {
testCmd := RootCmd

args := []string{"pam", "create", "--from-file", fileName}
// log the args as a string
t.Logf("args: %s", args)
testCmd.SetArgs(args)
t.Logf("fileName: %s", fileName)
output := captureOutput(
func() {
err = testCmd.Execute()
if !allowFail {
assert.NoError(t, err)
}
},
)
if err = json.Unmarshal([]byte(output), &createResponse); err != nil {
if allowFail {
t.Logf("Error unmarshalling JSON: %v", err)
} else {
t.Errorf("failed to create a PAM provider: %v", err)
}
return
}

args := []string{"pam", "create", "--from-file", fileName}
// log the args as a string
t.Logf("args: %s", args)
testCmd.SetArgs(args)
t.Logf("fileName: %s", fileName)
output := captureOutput(func() {
err = testCmd.Execute()
if !allowFail {
assert.NoError(t, err)
assert.NotEmpty(t, createResponse.(map[string]interface{})["Id"])
assert.NotEmpty(t, createResponse.(map[string]interface{})["Name"])
assert.Equal(t, createResponse.(map[string]interface{})["Name"], providerName)
assert.NotEmpty(t, createResponse.(map[string]interface{})["ProviderType"])
}
})
if err = json.Unmarshal([]byte(output), &createResponse); err != nil {
if allowFail {
t.Logf("Error unmarshalling JSON: %v", err)
} else {
t.Errorf("failed to create a PAM provider: %v", err)
}
return
}

if !allowFail {
assert.NotEmpty(t, createResponse.(map[string]interface{})["Id"])
assert.NotEmpty(t, createResponse.(map[string]interface{})["Name"])
assert.Equal(t, createResponse.(map[string]interface{})["Name"], providerName)
assert.NotEmpty(t, createResponse.(map[string]interface{})["ProviderType"])
}
})
},
)

return createResponse, err
}

func testDeletePamProvider(t *testing.T, pID int, allowFail bool) error {
var err error
var output string
t.Run(fmt.Sprintf("Deleting PAM provider %d", pID), func(t *testing.T) {
testCmd := RootCmd

testCmd.SetArgs([]string{"pam", "delete", "--id", strconv.Itoa(pID)})
output = captureOutput(func() {
err = testCmd.Execute()
t.Run(
fmt.Sprintf("Deleting PAM provider %d", pID), func(t *testing.T) {
testCmd := RootCmd

testCmd.SetArgs([]string{"pam", "delete", "--id", strconv.Itoa(pID)})
output = captureOutput(
func() {
err = testCmd.Execute()
if !allowFail {
assert.NoError(t, err)
}
},
)
if !allowFail {
assert.NoError(t, err)
assert.Contains(t, output, fmt.Sprintf("Deleted PAM provider with ID %d", pID))
}
})
if !allowFail {
assert.Contains(t, output, fmt.Sprintf("Deleted PAM provider with ID %d", pID))
}
})
},
)
if err != nil && !allowFail {
t.Log(output)
return err
Expand All @@ -513,12 +538,14 @@ func testListPamProviderTypes(t *testing.T, name string, allowFail bool, allowEm
testCmd := RootCmd
// test
testCmd.SetArgs([]string{"pam", "types-list"})
output = captureOutput(func() {
err = testCmd.Execute()
if !allowFail {
assert.NoError(t, err)
}
})
output = captureOutput(
func() {
err = testCmd.Execute()
if !allowFail {
assert.NoError(t, err)
}
},
)
var pTypes []interface{}
if err = json.Unmarshal([]byte(output), &pTypes); err != nil && !allowFail {
t.Errorf("Error unmarshalling JSON: %v", err)
Expand Down Expand Up @@ -632,7 +659,11 @@ func testFormatPamCreateConfig(t *testing.T, inputFileName string, providerName
if oErr == nil {
oErr = fmt.Errorf("failed to find PAM provider type '%s' unable to create PAM provider", cProviderTypeName)
} else {
oErr = fmt.Errorf("failed to find PAM provider type '%s' unable to create PAM provider: %v", cProviderTypeName, oErr)
oErr = fmt.Errorf(
"failed to find PAM provider type '%s' unable to create PAM provider: %v",
cProviderTypeName,
oErr,
)
}
t.Error(oErr)
return "", oErr
Expand Down

0 comments on commit f4ae3c6

Please sign in to comment.