Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
251f112
CDI-355: Favor Export Failure Warnings Over Errors
erikostien-pingidentity Jan 31, 2025
49b1646
Use option configuration environment variables for PF provider initia…
erikostien-pingidentity Jan 31, 2025
c74d381
Update HandleClientResponse to warn on client error and 403 forbidden…
erikostien-pingidentity Feb 5, 2025
a477881
Implement common data extractions from PingOne SDK entity array. Hand…
erikostien-pingidentity Feb 20, 2025
8a1735b
Fix error message formatting
erikostien-pingidentity Feb 20, 2025
3faa38c
Implement common data extractions from PingOne SDK entity array for MFA.
erikostien-pingidentity Feb 20, 2025
0d43d93
Implement common data extractions from PingOne SDK entity array for P…
erikostien-pingidentity Feb 20, 2025
f2c442c
Implement common data extractions from PingOne SDK entity array for SSO
erikostien-pingidentity Feb 20, 2025
5f16243
Update dependencies and use tool directive instead of tools.go
erikostien-pingidentity Feb 20, 2025
9426731
Use common reflect value extraction function, move MFA resource funct…
erikostien-pingidentity Feb 20, 2025
6dd6e33
Pass PF resource data by value to avoid nil dereference
erikostien-pingidentity Feb 20, 2025
8df93e0
move management resource functions back into ExportableResource type
erikostien-pingidentity Feb 20, 2025
ac03fc6
move risk resource functions back into ExportableResource type
erikostien-pingidentity Feb 20, 2025
67d3c98
Add check to PF version api endpoint to verify valid PF client config…
erikostien-pingidentity Feb 20, 2025
5df54df
Merge branch 'main' into CDI-355
erikostien-pingidentity Feb 21, 2025
1c140d6
PR review changes
erikostien-pingidentity Feb 21, 2025
0185ae8
Use pingone package for API object extraction
erikostien-pingidentity Feb 21, 2025
d512f73
Standarize Response error and warning output
erikostien-pingidentity Feb 21, 2025
e7a7884
Fix broken test
erikostien-pingidentity Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ starttestcontainer:
-p 9999:9999 \
--env-file "${HOME}/.pingidentity/config" \
-v $$(pwd)/server-profiles/shared-profile:/opt/in \
-v $$(pwd)/server-profiles/12.1/data.json:/opt/in/instance/bulk-config/data.json \
pingidentity/pingfederate:latest
-v $$(pwd)/server-profiles/12.2/data.json:/opt/in/instance/bulk-config/data.json \
pingidentity/pingfederate:12.2.0-latest
# Wait for the instance to become ready
sleep 1
duration=0
Expand Down
25 changes: 21 additions & 4 deletions cmd/platform/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,28 @@ func TestPlatformExportCmd_PingFederateBasicAuthFlagsRequiredTogether(t *testing
testutils.CheckExpectedError(t, err, &expectedErrorPattern)
}

// Test Platform Export Command fails when provided invalid PingOne Client Credential flags
func TestPlatformExportCmd_PingOneClientCredentialFlagsInvalid(t *testing.T) {
outputDir := t.TempDir()

expectedErrorPattern := `^failed to initialize pingone API client\. Check worker client ID, worker client secret, worker environment ID, and pingone region code configuration values\. oauth2: \"invalid_client\" \"Request denied: Unsupported authentication method \(Correlation ID: .*\)\"$`
err := testutils_cobra.ExecutePingcli(t, "platform", "export",
"--output-directory", outputDir,
"--overwrite",
"--services", "pingone-protect",
"--pingone-worker-environment-id", os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar),
"--pingone-worker-client-id", os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar),
"--pingone-worker-client-secret", "invalid",
"--pingone-region-code", os.Getenv(options.PingOneRegionCodeOption.EnvVar),
)
testutils.CheckExpectedError(t, err, &expectedErrorPattern)
}

// Test Platform Export Command fails when provided invalid PingFederate Basic Auth flags
func TestPlatformExportCmd_PingFederateBasicAuthFlagsInvalid(t *testing.T) {
outputDir := t.TempDir()

expectedErrorPattern := `^failed to export 'pingfederate' service: failed to export resource .*\. err: .* Request for resource '.*' was not successful\.\s+Response Code: 401 Unauthorized\s+Response Body: {{"resultId":"invalid_credentials","message":"The credentials you provided were not recognized\."}}\s+Error: 401 Unauthorized$`
expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$`
err := testutils_cobra.ExecutePingcli(t, "platform", "export",
"--output-directory", outputDir,
"--overwrite",
Expand Down Expand Up @@ -242,7 +259,7 @@ func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsRequiredTogethe
func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsInvalid(t *testing.T) {
outputDir := t.TempDir()

expectedErrorPattern := `^failed to export 'pingfederate' service: failed to export resource .*\. err: .* Request for resource '.*' was not successful\. Response is nil\. Error: oauth2: "invalid_client" "Invalid client or client credentials\."$`
expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$`
err := testutils_cobra.ExecutePingcli(t, "platform", "export",
"--output-directory", outputDir,
"--overwrite",
Expand All @@ -259,7 +276,7 @@ func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsInvalid(t *test
func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsInvalidTokenURL(t *testing.T) {
outputDir := t.TempDir()

expectedErrorPattern := `(?s)^failed to export 'pingfederate' service: failed to export resource.*\. err:.*Request for resource '.*' was not successful\. Response is nil\. Error: oauth2: cannot fetch token: 404 Not Found\s+Response: \<!DOCTYPE html\>\s+.*$`
expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$`
err := testutils_cobra.ExecutePingcli(t, "platform", "export",
"--output-directory", outputDir,
"--overwrite",
Expand Down Expand Up @@ -308,7 +325,7 @@ func TestPlatformExportCmd_PingFederateTrustAllTLSFlag(t *testing.T) {
func TestPlatformExportCmd_PingFederateTrustAllTLSFlagFalse(t *testing.T) {
outputDir := t.TempDir()

expectedErrorPattern := `^failed to export '.*' service: failed to export resource .*\. err: .* Request for resource '.*' was not successful\. Response is nil\. Error: Get "https.*": tls: failed to verify certificate: x509: certificate signed by unknown authority$`
expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$`
err := testutils_cobra.ExecutePingcli(t, "platform", "export",
"--output-directory", outputDir,
"--overwrite",
Expand Down
40 changes: 21 additions & 19 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ require (
github.com/manifoldco/promptui v0.9.0
github.com/patrickcping/pingone-go-sdk-v2 v0.12.9
github.com/patrickcping/pingone-go-sdk-v2/management v0.49.0
github.com/patrickcping/pingone-go-sdk-v2/mfa v0.23.0
github.com/patrickcping/pingone-go-sdk-v2/risk v0.19.0
github.com/pingidentity/pingfederate-go-client/v1210 v1210.0.5
github.com/rs/zerolog v1.33.0
Expand All @@ -34,7 +35,7 @@ require (
github.com/Crocmagnon/fatcontext v0.7.1 // indirect
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 // indirect
github.com/Masterminds/semver/v3 v3.3.1 // indirect
github.com/Masterminds/semver/v3 v3.3.0 // indirect
github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect
github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
github.com/alexkohler/nakedret/v2 v2.0.5 // indirect
Expand All @@ -56,7 +57,7 @@ require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charithe/durationcheck v0.0.10 // indirect
github.com/chavacava/garif v0.1.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
github.com/ckaznocha/intrange v0.3.0 // indirect
github.com/curioswitch/go-reassign v0.3.0 // indirect
github.com/daixiang0/gci v0.13.5 // indirect
Expand All @@ -65,7 +66,7 @@ require (
github.com/ettle/strcase v0.2.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/firefart/nonamedreturns v1.0.5 // indirect
github.com/fsnotify/fsnotify v1.8.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fzipp/gocyclo v0.6.0 // indirect
github.com/ghostiam/protogetter v0.3.9 // indirect
github.com/go-critic/go-critic v0.12.0 // indirect
Expand All @@ -80,6 +81,7 @@ require (
github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gofrs/flock v0.12.1 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
github.com/golangci/go-printf-func-name v0.1.0 // indirect
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect
Expand All @@ -91,7 +93,7 @@ require (
github.com/google/go-cmp v0.6.0 // indirect
github.com/gordonklaus/ineffassign v0.1.0 // indirect
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
github.com/gostaticanalysis/comment v1.5.0 // indirect
github.com/gostaticanalysis/comment v1.4.2 // indirect
github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect
github.com/gostaticanalysis/nilerr v0.1.1 // indirect
github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect
Expand All @@ -118,46 +120,45 @@ require (
github.com/ldez/usetesting v0.4.2 // indirect
github.com/leonklingele/grouper v1.1.2 // indirect
github.com/macabu/inamedparam v0.1.3 // indirect
github.com/magiconair/properties v1.8.9 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/maratori/testableexamples v1.0.0 // indirect
github.com/maratori/testpackage v1.1.1 // indirect
github.com/matoous/godox v1.1.0 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/mgechev/revive v1.6.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moricho/tparallel v0.3.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nakabonne/nestif v0.3.1 // indirect
github.com/nishanths/exhaustive v0.12.0 // indirect
github.com/nishanths/predeclared v0.2.2 // indirect
github.com/nunnatsa/ginkgolinter v0.19.0 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/patrickcping/pingone-go-sdk-v2/authorize v0.8.0 // indirect
github.com/patrickcping/pingone-go-sdk-v2/credentials v0.11.0 // indirect
github.com/patrickcping/pingone-go-sdk-v2/mfa v0.23.0 // indirect
github.com/patrickcping/pingone-go-sdk-v2/verify v0.9.0 // indirect
github.com/pavius/impi v0.0.3 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/polyfloyd/go-errorlint v1.7.1 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/prometheus/client_golang v1.12.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.32.1 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect
github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
github.com/raeperd/recvcheck v0.2.0 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rogpeppe/go-internal v1.13.2-0.20241226121412-a5dc8ff20d0a // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/ryancurrah/gomodguard v1.3.5 // indirect
github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect
Expand All @@ -171,15 +172,15 @@ require (
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/sourcegraph/go-diff v0.7.0 // indirect
github.com/spf13/afero v1.12.0 // indirect
github.com/spf13/cast v1.7.1 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/tdakkota/asciicheck v0.4.0 // indirect
github.com/tetafro/godot v1.4.20 // indirect
github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect
github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect
github.com/timonwong/loggercheck v0.10.1 // indirect
github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
Expand All @@ -194,10 +195,11 @@ require (
gitlab.com/bosi/decorder v0.4.2 // indirect
go-simpler.org/musttag v0.13.0 // indirect
go-simpler.org/sloglint v0.9.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect
go.uber.org/multierr v1.9.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect
golang.org/x/mod v0.23.0 // indirect
golang.org/x/oauth2 v0.26.0 // indirect
Expand All @@ -210,5 +212,5 @@ require (
gopkg.in/yaml.v2 v2.4.0 // indirect
honnef.co/go/tools v0.6.0 // indirect
mvdan.cc/gofumpt v0.7.0 // indirect
mvdan.cc/unparam v0.0.0-20241226123437-447d509598f3 // indirect
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect
)
Loading
Loading