From c8b3bdcca6b7dce07ecee30daf18ee94bec415d2 Mon Sep 17 00:00:00 2001 From: ramya18101 Date: Mon, 7 Sep 2026 15:45:15 +0530 Subject: [PATCH 1/5] refactor: migrate mock package from golang/mock to go.uber.org/mock --- Makefile | 3 +- go.mod | 4 +- go.sum | 16 +-- internal/auth0/mock/action_mock.go | 57 ++++----- internal/auth0/mock/action_module_mock.go | 64 +++++----- internal/auth0/mock/branding_mock.go | 63 +++++----- internal/auth0/mock/branding_prompt_mock.go | 69 +++++------ internal/auth0/mock/branding_theme_mock.go | 33 ++--- internal/auth0/mock/client_grant_mock.go | 40 ++++--- internal/auth0/mock/client_mock.go | 39 +++--- internal/auth0/mock/connection_mock.go | 45 +++---- internal/auth0/mock/custom_domain_mock.go | 57 ++++----- internal/auth0/mock/email_provider_mock.go | 27 +++-- internal/auth0/mock/email_template_mock.go | 21 ++-- internal/auth0/mock/event_streams_mock.go | 69 +++++------ internal/auth0/mock/flow_mock.go | 64 +++++----- internal/auth0/mock/form_mock.go | 33 ++--- internal/auth0/mock/log_mock.go | 21 ++-- internal/auth0/mock/log_stream_mock.go | 33 ++--- internal/auth0/mock/network_acl_mock.go | 39 +++--- internal/auth0/mock/organization_mock.go | 105 ++++++++-------- .../mock/phone_notification_template_mock.go | 9 +- internal/auth0/mock/refresh_token_mock.go | 27 +++-- internal/auth0/mock/resource_server_mock.go | 33 ++--- internal/auth0/mock/roles_mock.go | 51 ++++---- internal/auth0/mock/rule_mock.go | 33 ++--- internal/auth0/mock/self_service_profiles.go | 43 +++---- internal/auth0/mock/session_mock.go | 27 +++-- internal/auth0/mock/tenant_mock.go | 15 +-- internal/auth0/mock/token_exchange_mock.go | 33 ++--- .../auth0/mock/user_attribute_profiles.go | 45 +++---- internal/auth0/mock/user_mock.go | 113 +++++++++--------- internal/cli/actions_modules_test.go | 2 +- internal/cli/actions_modules_versions_test.go | 2 +- internal/cli/actions_test.go | 2 +- internal/cli/apis_test.go | 2 +- internal/cli/apps_test.go | 2 +- .../cli/client_grants_organizations_test.go | 2 +- internal/cli/client_grants_test.go | 2 +- internal/cli/custom_domains_test.go | 2 +- internal/cli/event_streams_test.go | 2 +- internal/cli/log_streams_test.go | 2 +- internal/cli/logs_test.go | 2 +- internal/cli/network_acl_test.go | 2 +- internal/cli/organizations_test.go | 2 +- internal/cli/prompts_custom_text_test.go | 2 +- internal/cli/quickstarts_test.go | 2 +- internal/cli/refresh_tokens_test.go | 2 +- internal/cli/roles_test.go | 2 +- internal/cli/rules_test.go | 2 +- internal/cli/sessions_test.go | 2 +- internal/cli/terraform_fetcher_test.go | 2 +- internal/cli/test_test.go | 2 +- .../cli/universal_login_customize_test.go | 2 +- .../cli/universal_login_templates_test.go | 2 +- internal/cli/users_refresh_tokens_test.go | 2 +- internal/cli/users_roles_test.go | 2 +- internal/cli/users_sessions_test.go | 2 +- internal/cli/users_test.go | 2 +- internal/cli/utils_shared_test.go | 2 +- references/testing.md | 2 +- tools/tools.go | 9 -- 62 files changed, 707 insertions(+), 691 deletions(-) delete mode 100644 tools/tools.go diff --git a/Makefile b/Makefile index 5adda9fa3..08f40bdf0 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,7 @@ deps: ## Download dependencies $(GO_BIN)/mockgen: ${call print, "Installing mockgen"} - @go install -v github.com/golang/mock/mockgen@latest + @go install -v go.uber.org/mock/mockgen $(GO_BIN)/golangci-lint: ${call print, "Installing golangci-lint"} @@ -176,6 +176,7 @@ test-integration: install-with-cover $(GO_BIN)/auth0 $(GO_BIN)/commander ## Run test-mocks: $(GO_BIN)/mockgen ## Generate testing mocks using mockgen ${call print, "Generating test mocks"} @go generate -v ./... + @find internal -path '*/mock/*.go' -type f -exec perl -0pi -e 's{//\n// Generated by this command:\n//\n//[^\n]*\n//\n}{}' {} + test-clean: ## Clean up test tenant ${call print, "Cleaning up the test tenant"} diff --git a/go.mod b/go.mod index 4f4547e3d..e1cf1d059 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,6 @@ require ( github.com/fsnotify/fsnotify v1.10.1 github.com/getkin/kin-openapi v0.149.0 github.com/getsentry/sentry-go v0.49.0 - github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.3 @@ -38,6 +37,7 @@ require ( github.com/stretchr/testify v1.12.1 github.com/tidwall/pretty v1.2.1 github.com/zalando/go-keyring v0.2.8 + go.uber.org/mock v0.6.0 golang.org/x/oauth2 v0.36.0 golang.org/x/sync v0.22.0 golang.org/x/sys v0.47.0 @@ -106,3 +106,5 @@ require ( golang.org/x/net v0.57.0 // indirect golang.org/x/tools v0.48.0 // indirect ) + +tool go.uber.org/mock/mockgen diff --git a/go.sum b/go.sum index 4bb856a6c..747728760 100644 --- a/go.sum +++ b/go.sum @@ -108,8 +108,6 @@ github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ= github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -259,7 +257,6 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.8.4 h1:oat/nd3U6NeQqFEL3xpEJq7d7c86NI+DbSNGAs4xnjA= github.com/yuin/goldmark v1.8.4/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= @@ -271,24 +268,22 @@ github.com/zclconf/go-cty v1.18.1 h1:yEGE8M4iIZlyKQURZNb2SnEyZlZHUcBCnx6KF81KuwM github.com/zclconf/go-cty v1.18.1/go.mod h1:qpnV6EDNgC1sns/AleL1fvatHw72j+S+nS+MJ+T2CSg= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= @@ -296,18 +291,14 @@ golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -328,13 +319,10 @@ golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/internal/auth0/mock/action_mock.go b/internal/auth0/mock/action_mock.go index c9e33325d..dc62f9d19 100644 --- a/internal/auth0/mock/action_mock.go +++ b/internal/auth0/mock/action_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockActionAPI is a mock of ActionAPI interface. type MockActionAPI struct { ctrl *gomock.Controller recorder *MockActionAPIMockRecorder + isgomock struct{} } // MockActionAPIMockRecorder is the mock recorder for MockActionAPI. @@ -38,7 +39,7 @@ func (m *MockActionAPI) EXPECT() *MockActionAPIMockRecorder { // Bindings mocks base method. func (m *MockActionAPI) Bindings(ctx context.Context, triggerID string, opts ...management.RequestOption) (*management.ActionBindingList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, triggerID} + varargs := []any{ctx, triggerID} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockActionAPI) Bindings(ctx context.Context, triggerID string, opts ... } // Bindings indicates an expected call of Bindings. -func (mr *MockActionAPIMockRecorder) Bindings(ctx, triggerID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Bindings(ctx, triggerID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, triggerID}, opts...) + varargs := append([]any{ctx, triggerID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Bindings", reflect.TypeOf((*MockActionAPI)(nil).Bindings), varargs...) } // Create mocks base method. func (m *MockActionAPI) Create(ctx context.Context, a *management.Action, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, a} + varargs := []any{ctx, a} for _, a_2 := range opts { varargs = append(varargs, a_2) } @@ -68,16 +69,16 @@ func (m *MockActionAPI) Create(ctx context.Context, a *management.Action, opts . } // Create indicates an expected call of Create. -func (mr *MockActionAPIMockRecorder) Create(ctx, a interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Create(ctx, a any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, a}, opts...) + varargs := append([]any{ctx, a}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockActionAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockActionAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockActionAPI) Delete(ctx context.Context, id string, opts ...managemen } // Delete indicates an expected call of Delete. -func (mr *MockActionAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockActionAPI)(nil).Delete), varargs...) } // Deploy mocks base method. func (m *MockActionAPI) Deploy(ctx context.Context, id string, opts ...management.RequestOption) (*management.ActionVersion, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockActionAPI) Deploy(ctx context.Context, id string, opts ...managemen } // Deploy indicates an expected call of Deploy. -func (mr *MockActionAPIMockRecorder) Deploy(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Deploy(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Deploy", reflect.TypeOf((*MockActionAPI)(nil).Deploy), varargs...) } // List mocks base method. func (m *MockActionAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.ActionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockActionAPI) List(ctx context.Context, opts ...management.RequestOpti } // List indicates an expected call of List. -func (mr *MockActionAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockActionAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockActionAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Action, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -147,16 +148,16 @@ func (m *MockActionAPI) Read(ctx context.Context, id string, opts ...management. } // Read indicates an expected call of Read. -func (mr *MockActionAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockActionAPI)(nil).Read), varargs...) } // Triggers mocks base method. func (m *MockActionAPI) Triggers(ctx context.Context, opts ...management.RequestOption) (*management.ActionTriggerList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -167,16 +168,16 @@ func (m *MockActionAPI) Triggers(ctx context.Context, opts ...management.Request } // Triggers indicates an expected call of Triggers. -func (mr *MockActionAPIMockRecorder) Triggers(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Triggers(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Triggers", reflect.TypeOf((*MockActionAPI)(nil).Triggers), varargs...) } // Update mocks base method. func (m *MockActionAPI) Update(ctx context.Context, id string, a *management.Action, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, a} + varargs := []any{ctx, id, a} for _, a_2 := range opts { varargs = append(varargs, a_2) } @@ -186,16 +187,16 @@ func (m *MockActionAPI) Update(ctx context.Context, id string, a *management.Act } // Update indicates an expected call of Update. -func (mr *MockActionAPIMockRecorder) Update(ctx, id, a interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Update(ctx, id, a any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, a}, opts...) + varargs := append([]any{ctx, id, a}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockActionAPI)(nil).Update), varargs...) } // Versions mocks base method. func (m *MockActionAPI) Versions(ctx context.Context, id string, opts ...management.RequestOption) (*management.ActionVersionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -206,8 +207,8 @@ func (m *MockActionAPI) Versions(ctx context.Context, id string, opts ...managem } // Versions indicates an expected call of Versions. -func (mr *MockActionAPIMockRecorder) Versions(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionAPIMockRecorder) Versions(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Versions", reflect.TypeOf((*MockActionAPI)(nil).Versions), varargs...) } diff --git a/internal/auth0/mock/action_module_mock.go b/internal/auth0/mock/action_module_mock.go index 2eee8ad45..60f7eb560 100644 --- a/internal/auth0/mock/action_module_mock.go +++ b/internal/auth0/mock/action_module_mock.go @@ -11,13 +11,14 @@ import ( auth0 "github.com/auth0/auth0-cli/internal/auth0" management "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockActionModuleAPIV3 is a mock of ActionModuleAPIV3 interface. type MockActionModuleAPIV3 struct { ctrl *gomock.Controller recorder *MockActionModuleAPIV3MockRecorder + isgomock struct{} } // MockActionModuleAPIV3MockRecorder is the mock recorder for MockActionModuleAPIV3. @@ -40,7 +41,7 @@ func (m *MockActionModuleAPIV3) EXPECT() *MockActionModuleAPIV3MockRecorder { // Create mocks base method. func (m *MockActionModuleAPIV3) Create(ctx context.Context, request *management.CreateActionModuleRequestContent, opts ...option.RequestOption) (*management.CreateActionModuleResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -51,16 +52,16 @@ func (m *MockActionModuleAPIV3) Create(ctx context.Context, request *management. } // Create indicates an expected call of Create. -func (mr *MockActionModuleAPIV3MockRecorder) Create(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) Create(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockActionModuleAPIV3)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockActionModuleAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -70,16 +71,16 @@ func (m *MockActionModuleAPIV3) Delete(ctx context.Context, id string, opts ...o } // Delete indicates an expected call of Delete. -func (mr *MockActionModuleAPIV3MockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockActionModuleAPIV3)(nil).Delete), varargs...) } // Get mocks base method. func (m *MockActionModuleAPIV3) Get(ctx context.Context, id string, opts ...option.RequestOption) (*management.GetActionModuleResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -90,16 +91,16 @@ func (m *MockActionModuleAPIV3) Get(ctx context.Context, id string, opts ...opti } // Get indicates an expected call of Get. -func (mr *MockActionModuleAPIV3MockRecorder) Get(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) Get(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockActionModuleAPIV3)(nil).Get), varargs...) } // List mocks base method. func (m *MockActionModuleAPIV3) List(ctx context.Context, request *management.GetActionModulesRequestParameters, opts ...option.RequestOption) (*auth0.ActionModulePage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -110,16 +111,16 @@ func (m *MockActionModuleAPIV3) List(ctx context.Context, request *management.Ge } // List indicates an expected call of List. -func (mr *MockActionModuleAPIV3MockRecorder) List(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) List(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockActionModuleAPIV3)(nil).List), varargs...) } // ListActions mocks base method. func (m *MockActionModuleAPIV3) ListActions(ctx context.Context, id string, request *management.GetActionModuleActionsRequestParameters, opts ...option.RequestOption) (*auth0.ActionModuleActionPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -130,16 +131,16 @@ func (m *MockActionModuleAPIV3) ListActions(ctx context.Context, id string, requ } // ListActions indicates an expected call of ListActions. -func (mr *MockActionModuleAPIV3MockRecorder) ListActions(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) ListActions(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListActions", reflect.TypeOf((*MockActionModuleAPIV3)(nil).ListActions), varargs...) } // Rollback mocks base method. func (m *MockActionModuleAPIV3) Rollback(ctx context.Context, id string, request *management.RollbackActionModuleRequestParameters, opts ...option.RequestOption) (*management.RollbackActionModuleResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -150,16 +151,16 @@ func (m *MockActionModuleAPIV3) Rollback(ctx context.Context, id string, request } // Rollback indicates an expected call of Rollback. -func (mr *MockActionModuleAPIV3MockRecorder) Rollback(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) Rollback(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Rollback", reflect.TypeOf((*MockActionModuleAPIV3)(nil).Rollback), varargs...) } // Update mocks base method. func (m *MockActionModuleAPIV3) Update(ctx context.Context, id string, request *management.UpdateActionModuleRequestContent, opts ...option.RequestOption) (*management.UpdateActionModuleResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -170,9 +171,9 @@ func (m *MockActionModuleAPIV3) Update(ctx context.Context, id string, request * } // Update indicates an expected call of Update. -func (mr *MockActionModuleAPIV3MockRecorder) Update(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleAPIV3MockRecorder) Update(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockActionModuleAPIV3)(nil).Update), varargs...) } @@ -180,6 +181,7 @@ func (mr *MockActionModuleAPIV3MockRecorder) Update(ctx, id, request interface{} type MockActionModuleVersionAPIV3 struct { ctrl *gomock.Controller recorder *MockActionModuleVersionAPIV3MockRecorder + isgomock struct{} } // MockActionModuleVersionAPIV3MockRecorder is the mock recorder for MockActionModuleVersionAPIV3. @@ -202,7 +204,7 @@ func (m *MockActionModuleVersionAPIV3) EXPECT() *MockActionModuleVersionAPIV3Moc // Create mocks base method. func (m *MockActionModuleVersionAPIV3) Create(ctx context.Context, id string, opts ...option.RequestOption) (*management.CreateActionModuleVersionResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -213,16 +215,16 @@ func (m *MockActionModuleVersionAPIV3) Create(ctx context.Context, id string, op } // Create indicates an expected call of Create. -func (mr *MockActionModuleVersionAPIV3MockRecorder) Create(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleVersionAPIV3MockRecorder) Create(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockActionModuleVersionAPIV3)(nil).Create), varargs...) } // Get mocks base method. func (m *MockActionModuleVersionAPIV3) Get(ctx context.Context, id, versionID string, opts ...option.RequestOption) (*management.GetActionModuleVersionResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, versionID} + varargs := []any{ctx, id, versionID} for _, a := range opts { varargs = append(varargs, a) } @@ -233,16 +235,16 @@ func (m *MockActionModuleVersionAPIV3) Get(ctx context.Context, id, versionID st } // Get indicates an expected call of Get. -func (mr *MockActionModuleVersionAPIV3MockRecorder) Get(ctx, id, versionID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleVersionAPIV3MockRecorder) Get(ctx, id, versionID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, versionID}, opts...) + varargs := append([]any{ctx, id, versionID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockActionModuleVersionAPIV3)(nil).Get), varargs...) } // List mocks base method. func (m *MockActionModuleVersionAPIV3) List(ctx context.Context, id string, request *management.GetActionModuleVersionsRequestParameters, opts ...option.RequestOption) (*auth0.ActionModuleVersionPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -253,8 +255,8 @@ func (m *MockActionModuleVersionAPIV3) List(ctx context.Context, id string, requ } // List indicates an expected call of List. -func (mr *MockActionModuleVersionAPIV3MockRecorder) List(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockActionModuleVersionAPIV3MockRecorder) List(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockActionModuleVersionAPIV3)(nil).List), varargs...) } diff --git a/internal/auth0/mock/branding_mock.go b/internal/auth0/mock/branding_mock.go index bb4cda6ce..c397eecbb 100644 --- a/internal/auth0/mock/branding_mock.go +++ b/internal/auth0/mock/branding_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockBrandingAPI is a mock of BrandingAPI interface. type MockBrandingAPI struct { ctrl *gomock.Controller recorder *MockBrandingAPIMockRecorder + isgomock struct{} } // MockBrandingAPIMockRecorder is the mock recorder for MockBrandingAPI. @@ -38,7 +39,7 @@ func (m *MockBrandingAPI) EXPECT() *MockBrandingAPIMockRecorder { // CreatePhoneProvider mocks base method. func (m *MockBrandingAPI) CreatePhoneProvider(ctx context.Context, pp *management.BrandingPhoneProvider, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, pp} + varargs := []any{ctx, pp} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockBrandingAPI) CreatePhoneProvider(ctx context.Context, pp *managemen } // CreatePhoneProvider indicates an expected call of CreatePhoneProvider. -func (mr *MockBrandingAPIMockRecorder) CreatePhoneProvider(ctx, pp interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) CreatePhoneProvider(ctx, pp any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, pp}, opts...) + varargs := append([]any{ctx, pp}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePhoneProvider", reflect.TypeOf((*MockBrandingAPI)(nil).CreatePhoneProvider), varargs...) } // DeletePhoneProvider mocks base method. func (m *MockBrandingAPI) DeletePhoneProvider(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockBrandingAPI) DeletePhoneProvider(ctx context.Context, id string, op } // DeletePhoneProvider indicates an expected call of DeletePhoneProvider. -func (mr *MockBrandingAPIMockRecorder) DeletePhoneProvider(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) DeletePhoneProvider(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePhoneProvider", reflect.TypeOf((*MockBrandingAPI)(nil).DeletePhoneProvider), varargs...) } // DeleteUniversalLogin mocks base method. func (m *MockBrandingAPI) DeleteUniversalLogin(ctx context.Context, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -86,16 +87,16 @@ func (m *MockBrandingAPI) DeleteUniversalLogin(ctx context.Context, opts ...mana } // DeleteUniversalLogin indicates an expected call of DeleteUniversalLogin. -func (mr *MockBrandingAPIMockRecorder) DeleteUniversalLogin(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) DeleteUniversalLogin(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteUniversalLogin", reflect.TypeOf((*MockBrandingAPI)(nil).DeleteUniversalLogin), varargs...) } // ListPhoneProviders mocks base method. func (m *MockBrandingAPI) ListPhoneProviders(ctx context.Context, opts ...management.RequestOption) (*management.BrandingPhoneProviderList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -106,16 +107,16 @@ func (m *MockBrandingAPI) ListPhoneProviders(ctx context.Context, opts ...manage } // ListPhoneProviders indicates an expected call of ListPhoneProviders. -func (mr *MockBrandingAPIMockRecorder) ListPhoneProviders(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) ListPhoneProviders(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPhoneProviders", reflect.TypeOf((*MockBrandingAPI)(nil).ListPhoneProviders), varargs...) } // Read mocks base method. func (m *MockBrandingAPI) Read(ctx context.Context, opts ...management.RequestOption) (*management.Branding, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -126,16 +127,16 @@ func (m *MockBrandingAPI) Read(ctx context.Context, opts ...management.RequestOp } // Read indicates an expected call of Read. -func (mr *MockBrandingAPIMockRecorder) Read(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) Read(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockBrandingAPI)(nil).Read), varargs...) } // ReadPhoneProvider mocks base method. func (m *MockBrandingAPI) ReadPhoneProvider(ctx context.Context, id string, opts ...management.RequestOption) (*management.BrandingPhoneProvider, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -146,16 +147,16 @@ func (m *MockBrandingAPI) ReadPhoneProvider(ctx context.Context, id string, opts } // ReadPhoneProvider indicates an expected call of ReadPhoneProvider. -func (mr *MockBrandingAPIMockRecorder) ReadPhoneProvider(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) ReadPhoneProvider(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadPhoneProvider", reflect.TypeOf((*MockBrandingAPI)(nil).ReadPhoneProvider), varargs...) } // SetUniversalLogin mocks base method. func (m *MockBrandingAPI) SetUniversalLogin(ctx context.Context, ul *management.BrandingUniversalLogin, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, ul} + varargs := []any{ctx, ul} for _, a := range opts { varargs = append(varargs, a) } @@ -165,16 +166,16 @@ func (m *MockBrandingAPI) SetUniversalLogin(ctx context.Context, ul *management. } // SetUniversalLogin indicates an expected call of SetUniversalLogin. -func (mr *MockBrandingAPIMockRecorder) SetUniversalLogin(ctx, ul interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) SetUniversalLogin(ctx, ul any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, ul}, opts...) + varargs := append([]any{ctx, ul}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetUniversalLogin", reflect.TypeOf((*MockBrandingAPI)(nil).SetUniversalLogin), varargs...) } // UniversalLogin mocks base method. func (m *MockBrandingAPI) UniversalLogin(ctx context.Context, opts ...management.RequestOption) (*management.BrandingUniversalLogin, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -185,16 +186,16 @@ func (m *MockBrandingAPI) UniversalLogin(ctx context.Context, opts ...management } // UniversalLogin indicates an expected call of UniversalLogin. -func (mr *MockBrandingAPIMockRecorder) UniversalLogin(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) UniversalLogin(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UniversalLogin", reflect.TypeOf((*MockBrandingAPI)(nil).UniversalLogin), varargs...) } // Update mocks base method. func (m *MockBrandingAPI) Update(ctx context.Context, t *management.Branding, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, t} + varargs := []any{ctx, t} for _, a := range opts { varargs = append(varargs, a) } @@ -204,16 +205,16 @@ func (m *MockBrandingAPI) Update(ctx context.Context, t *management.Branding, op } // Update indicates an expected call of Update. -func (mr *MockBrandingAPIMockRecorder) Update(ctx, t interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) Update(ctx, t any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, t}, opts...) + varargs := append([]any{ctx, t}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockBrandingAPI)(nil).Update), varargs...) } // UpdatePhoneProvider mocks base method. func (m *MockBrandingAPI) UpdatePhoneProvider(ctx context.Context, id string, pp *management.BrandingPhoneProvider, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, pp} + varargs := []any{ctx, id, pp} for _, a := range opts { varargs = append(varargs, a) } @@ -223,8 +224,8 @@ func (m *MockBrandingAPI) UpdatePhoneProvider(ctx context.Context, id string, pp } // UpdatePhoneProvider indicates an expected call of UpdatePhoneProvider. -func (mr *MockBrandingAPIMockRecorder) UpdatePhoneProvider(ctx, id, pp interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingAPIMockRecorder) UpdatePhoneProvider(ctx, id, pp any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, pp}, opts...) + varargs := append([]any{ctx, id, pp}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePhoneProvider", reflect.TypeOf((*MockBrandingAPI)(nil).UpdatePhoneProvider), varargs...) } diff --git a/internal/auth0/mock/branding_prompt_mock.go b/internal/auth0/mock/branding_prompt_mock.go index a1c67d76d..851a43eea 100644 --- a/internal/auth0/mock/branding_prompt_mock.go +++ b/internal/auth0/mock/branding_prompt_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockPromptAPI is a mock of PromptAPI interface. type MockPromptAPI struct { ctrl *gomock.Controller recorder *MockPromptAPIMockRecorder + isgomock struct{} } // MockPromptAPIMockRecorder is the mock recorder for MockPromptAPI. @@ -38,7 +39,7 @@ func (m *MockPromptAPI) EXPECT() *MockPromptAPIMockRecorder { // BulkUpdateRendering mocks base method. func (m *MockPromptAPI) BulkUpdateRendering(ctx context.Context, c *management.PromptRenderingBulkUpdate, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, c} + varargs := []any{ctx, c} for _, a := range opts { varargs = append(varargs, a) } @@ -48,36 +49,36 @@ func (m *MockPromptAPI) BulkUpdateRendering(ctx context.Context, c *management.P } // BulkUpdateRendering indicates an expected call of BulkUpdateRendering. -func (mr *MockPromptAPIMockRecorder) BulkUpdateRendering(ctx, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) BulkUpdateRendering(ctx, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, c}, opts...) + varargs := append([]any{ctx, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BulkUpdateRendering", reflect.TypeOf((*MockPromptAPI)(nil).BulkUpdateRendering), varargs...) } // CustomText mocks base method. -func (m *MockPromptAPI) CustomText(ctx context.Context, p, l string, opts ...management.RequestOption) (map[string]interface{}, error) { +func (m *MockPromptAPI) CustomText(ctx context.Context, p, l string, opts ...management.RequestOption) (map[string]any, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, p, l} + varargs := []any{ctx, p, l} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "CustomText", varargs...) - ret0, _ := ret[0].(map[string]interface{}) + ret0, _ := ret[0].(map[string]any) ret1, _ := ret[1].(error) return ret0, ret1 } // CustomText indicates an expected call of CustomText. -func (mr *MockPromptAPIMockRecorder) CustomText(ctx, p, l interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) CustomText(ctx, p, l any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, p, l}, opts...) + varargs := append([]any{ctx, p, l}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CustomText", reflect.TypeOf((*MockPromptAPI)(nil).CustomText), varargs...) } // GetPartials mocks base method. func (m *MockPromptAPI) GetPartials(ctx context.Context, prompt management.PromptType, opts ...management.RequestOption) (*management.PromptScreenPartials, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, prompt} + varargs := []any{ctx, prompt} for _, a := range opts { varargs = append(varargs, a) } @@ -88,16 +89,16 @@ func (m *MockPromptAPI) GetPartials(ctx context.Context, prompt management.Promp } // GetPartials indicates an expected call of GetPartials. -func (mr *MockPromptAPIMockRecorder) GetPartials(ctx, prompt interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) GetPartials(ctx, prompt any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, prompt}, opts...) + varargs := append([]any{ctx, prompt}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPartials", reflect.TypeOf((*MockPromptAPI)(nil).GetPartials), varargs...) } // ListRendering mocks base method. func (m *MockPromptAPI) ListRendering(ctx context.Context, opts ...management.RequestOption) (*management.PromptRenderingList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -108,16 +109,16 @@ func (m *MockPromptAPI) ListRendering(ctx context.Context, opts ...management.Re } // ListRendering indicates an expected call of ListRendering. -func (mr *MockPromptAPIMockRecorder) ListRendering(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) ListRendering(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRendering", reflect.TypeOf((*MockPromptAPI)(nil).ListRendering), varargs...) } // Read mocks base method. func (m *MockPromptAPI) Read(ctx context.Context, opts ...management.RequestOption) (*management.Prompt, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -128,16 +129,16 @@ func (m *MockPromptAPI) Read(ctx context.Context, opts ...management.RequestOpti } // Read indicates an expected call of Read. -func (mr *MockPromptAPIMockRecorder) Read(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) Read(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockPromptAPI)(nil).Read), varargs...) } // ReadRendering mocks base method. func (m *MockPromptAPI) ReadRendering(ctx context.Context, prompt management.PromptType, screen management.ScreenName, opts ...management.RequestOption) (*management.PromptRendering, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, prompt, screen} + varargs := []any{ctx, prompt, screen} for _, a := range opts { varargs = append(varargs, a) } @@ -148,16 +149,16 @@ func (m *MockPromptAPI) ReadRendering(ctx context.Context, prompt management.Pro } // ReadRendering indicates an expected call of ReadRendering. -func (mr *MockPromptAPIMockRecorder) ReadRendering(ctx, prompt, screen interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) ReadRendering(ctx, prompt, screen any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, prompt, screen}, opts...) + varargs := append([]any{ctx, prompt, screen}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadRendering", reflect.TypeOf((*MockPromptAPI)(nil).ReadRendering), varargs...) } // SetCustomText mocks base method. -func (m *MockPromptAPI) SetCustomText(ctx context.Context, p, l string, b map[string]interface{}, opts ...management.RequestOption) error { +func (m *MockPromptAPI) SetCustomText(ctx context.Context, p, l string, b map[string]any, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, p, l, b} + varargs := []any{ctx, p, l, b} for _, a := range opts { varargs = append(varargs, a) } @@ -167,16 +168,16 @@ func (m *MockPromptAPI) SetCustomText(ctx context.Context, p, l string, b map[st } // SetCustomText indicates an expected call of SetCustomText. -func (mr *MockPromptAPIMockRecorder) SetCustomText(ctx, p, l, b interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) SetCustomText(ctx, p, l, b any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, p, l, b}, opts...) + varargs := append([]any{ctx, p, l, b}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCustomText", reflect.TypeOf((*MockPromptAPI)(nil).SetCustomText), varargs...) } // SetPartials mocks base method. func (m *MockPromptAPI) SetPartials(ctx context.Context, prompt management.PromptType, c *management.PromptScreenPartials, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, prompt, c} + varargs := []any{ctx, prompt, c} for _, a := range opts { varargs = append(varargs, a) } @@ -186,16 +187,16 @@ func (m *MockPromptAPI) SetPartials(ctx context.Context, prompt management.Promp } // SetPartials indicates an expected call of SetPartials. -func (mr *MockPromptAPIMockRecorder) SetPartials(ctx, prompt, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) SetPartials(ctx, prompt, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, prompt, c}, opts...) + varargs := append([]any{ctx, prompt, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetPartials", reflect.TypeOf((*MockPromptAPI)(nil).SetPartials), varargs...) } // Update mocks base method. func (m *MockPromptAPI) Update(ctx context.Context, p *management.Prompt, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, p} + varargs := []any{ctx, p} for _, a := range opts { varargs = append(varargs, a) } @@ -205,16 +206,16 @@ func (m *MockPromptAPI) Update(ctx context.Context, p *management.Prompt, opts . } // Update indicates an expected call of Update. -func (mr *MockPromptAPIMockRecorder) Update(ctx, p interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) Update(ctx, p any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, p}, opts...) + varargs := append([]any{ctx, p}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockPromptAPI)(nil).Update), varargs...) } // UpdateRendering mocks base method. func (m *MockPromptAPI) UpdateRendering(ctx context.Context, prompt management.PromptType, screen management.ScreenName, c *management.PromptRendering, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, prompt, screen, c} + varargs := []any{ctx, prompt, screen, c} for _, a := range opts { varargs = append(varargs, a) } @@ -224,8 +225,8 @@ func (m *MockPromptAPI) UpdateRendering(ctx context.Context, prompt management.P } // UpdateRendering indicates an expected call of UpdateRendering. -func (mr *MockPromptAPIMockRecorder) UpdateRendering(ctx, prompt, screen, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPromptAPIMockRecorder) UpdateRendering(ctx, prompt, screen, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, prompt, screen, c}, opts...) + varargs := append([]any{ctx, prompt, screen, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRendering", reflect.TypeOf((*MockPromptAPI)(nil).UpdateRendering), varargs...) } diff --git a/internal/auth0/mock/branding_theme_mock.go b/internal/auth0/mock/branding_theme_mock.go index 041f28ac9..369695699 100644 --- a/internal/auth0/mock/branding_theme_mock.go +++ b/internal/auth0/mock/branding_theme_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockBrandingThemeAPI is a mock of BrandingThemeAPI interface. type MockBrandingThemeAPI struct { ctrl *gomock.Controller recorder *MockBrandingThemeAPIMockRecorder + isgomock struct{} } // MockBrandingThemeAPIMockRecorder is the mock recorder for MockBrandingThemeAPI. @@ -38,7 +39,7 @@ func (m *MockBrandingThemeAPI) EXPECT() *MockBrandingThemeAPIMockRecorder { // Create mocks base method. func (m *MockBrandingThemeAPI) Create(ctx context.Context, theme *management.BrandingTheme, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, theme} + varargs := []any{ctx, theme} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockBrandingThemeAPI) Create(ctx context.Context, theme *management.Bra } // Create indicates an expected call of Create. -func (mr *MockBrandingThemeAPIMockRecorder) Create(ctx, theme interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingThemeAPIMockRecorder) Create(ctx, theme any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, theme}, opts...) + varargs := append([]any{ctx, theme}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockBrandingThemeAPI)(nil).Create), varargs...) } // Default mocks base method. func (m *MockBrandingThemeAPI) Default(ctx context.Context, opts ...management.RequestOption) (*management.BrandingTheme, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -68,16 +69,16 @@ func (m *MockBrandingThemeAPI) Default(ctx context.Context, opts ...management.R } // Default indicates an expected call of Default. -func (mr *MockBrandingThemeAPIMockRecorder) Default(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingThemeAPIMockRecorder) Default(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Default", reflect.TypeOf((*MockBrandingThemeAPI)(nil).Default), varargs...) } // Delete mocks base method. func (m *MockBrandingThemeAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockBrandingThemeAPI) Delete(ctx context.Context, id string, opts ...ma } // Delete indicates an expected call of Delete. -func (mr *MockBrandingThemeAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingThemeAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockBrandingThemeAPI)(nil).Delete), varargs...) } // Read mocks base method. func (m *MockBrandingThemeAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.BrandingTheme, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockBrandingThemeAPI) Read(ctx context.Context, id string, opts ...mana } // Read indicates an expected call of Read. -func (mr *MockBrandingThemeAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingThemeAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockBrandingThemeAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockBrandingThemeAPI) Update(ctx context.Context, id string, theme *management.BrandingTheme, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, theme} + varargs := []any{ctx, id, theme} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockBrandingThemeAPI) Update(ctx context.Context, id string, theme *man } // Update indicates an expected call of Update. -func (mr *MockBrandingThemeAPIMockRecorder) Update(ctx, id, theme interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockBrandingThemeAPIMockRecorder) Update(ctx, id, theme any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, theme}, opts...) + varargs := append([]any{ctx, id, theme}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockBrandingThemeAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/client_grant_mock.go b/internal/auth0/mock/client_grant_mock.go index 5df60c662..c947a1525 100644 --- a/internal/auth0/mock/client_grant_mock.go +++ b/internal/auth0/mock/client_grant_mock.go @@ -11,13 +11,14 @@ import ( auth0 "github.com/auth0/auth0-cli/internal/auth0" management "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockClientGrantAPIV3 is a mock of ClientGrantAPIV3 interface. type MockClientGrantAPIV3 struct { ctrl *gomock.Controller recorder *MockClientGrantAPIV3MockRecorder + isgomock struct{} } // MockClientGrantAPIV3MockRecorder is the mock recorder for MockClientGrantAPIV3. @@ -40,7 +41,7 @@ func (m *MockClientGrantAPIV3) EXPECT() *MockClientGrantAPIV3MockRecorder { // Create mocks base method. func (m *MockClientGrantAPIV3) Create(ctx context.Context, request *management.CreateClientGrantRequestContent, opts ...option.RequestOption) (*management.CreateClientGrantResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -51,16 +52,16 @@ func (m *MockClientGrantAPIV3) Create(ctx context.Context, request *management.C } // Create indicates an expected call of Create. -func (mr *MockClientGrantAPIV3MockRecorder) Create(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantAPIV3MockRecorder) Create(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockClientGrantAPIV3)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockClientGrantAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -70,16 +71,16 @@ func (m *MockClientGrantAPIV3) Delete(ctx context.Context, id string, opts ...op } // Delete indicates an expected call of Delete. -func (mr *MockClientGrantAPIV3MockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockClientGrantAPIV3)(nil).Delete), varargs...) } // Get mocks base method. func (m *MockClientGrantAPIV3) Get(ctx context.Context, id string, opts ...option.RequestOption) (*management.GetClientGrantResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -90,16 +91,16 @@ func (m *MockClientGrantAPIV3) Get(ctx context.Context, id string, opts ...optio } // Get indicates an expected call of Get. -func (mr *MockClientGrantAPIV3MockRecorder) Get(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantAPIV3MockRecorder) Get(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockClientGrantAPIV3)(nil).Get), varargs...) } // List mocks base method. func (m *MockClientGrantAPIV3) List(ctx context.Context, request *management.ListClientGrantsRequestParameters, opts ...option.RequestOption) (*auth0.ClientGrantPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -110,16 +111,16 @@ func (m *MockClientGrantAPIV3) List(ctx context.Context, request *management.Lis } // List indicates an expected call of List. -func (mr *MockClientGrantAPIV3MockRecorder) List(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantAPIV3MockRecorder) List(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockClientGrantAPIV3)(nil).List), varargs...) } // Update mocks base method. func (m *MockClientGrantAPIV3) Update(ctx context.Context, id string, request *management.UpdateClientGrantRequestContent, opts ...option.RequestOption) (*management.UpdateClientGrantResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -130,9 +131,9 @@ func (m *MockClientGrantAPIV3) Update(ctx context.Context, id string, request *m } // Update indicates an expected call of Update. -func (mr *MockClientGrantAPIV3MockRecorder) Update(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantAPIV3MockRecorder) Update(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockClientGrantAPIV3)(nil).Update), varargs...) } @@ -140,6 +141,7 @@ func (mr *MockClientGrantAPIV3MockRecorder) Update(ctx, id, request interface{}, type MockClientGrantOrganizationAPIV3 struct { ctrl *gomock.Controller recorder *MockClientGrantOrganizationAPIV3MockRecorder + isgomock struct{} } // MockClientGrantOrganizationAPIV3MockRecorder is the mock recorder for MockClientGrantOrganizationAPIV3. @@ -162,7 +164,7 @@ func (m *MockClientGrantOrganizationAPIV3) EXPECT() *MockClientGrantOrganization // List mocks base method. func (m *MockClientGrantOrganizationAPIV3) List(ctx context.Context, id string, request *management.ListClientGrantOrganizationsRequestParameters, opts ...option.RequestOption) (*auth0.ClientGrantOrganizationPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -173,8 +175,8 @@ func (m *MockClientGrantOrganizationAPIV3) List(ctx context.Context, id string, } // List indicates an expected call of List. -func (mr *MockClientGrantOrganizationAPIV3MockRecorder) List(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientGrantOrganizationAPIV3MockRecorder) List(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockClientGrantOrganizationAPIV3)(nil).List), varargs...) } diff --git a/internal/auth0/mock/client_mock.go b/internal/auth0/mock/client_mock.go index 03c899cf6..bd2156d60 100644 --- a/internal/auth0/mock/client_mock.go +++ b/internal/auth0/mock/client_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockClientAPI is a mock of ClientAPI interface. type MockClientAPI struct { ctrl *gomock.Controller recorder *MockClientAPIMockRecorder + isgomock struct{} } // MockClientAPIMockRecorder is the mock recorder for MockClientAPI. @@ -38,7 +39,7 @@ func (m *MockClientAPI) EXPECT() *MockClientAPIMockRecorder { // Create mocks base method. func (m *MockClientAPI) Create(ctx context.Context, c *management.Client, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, c} + varargs := []any{ctx, c} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockClientAPI) Create(ctx context.Context, c *management.Client, opts . } // Create indicates an expected call of Create. -func (mr *MockClientAPIMockRecorder) Create(ctx, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) Create(ctx, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, c}, opts...) + varargs := append([]any{ctx, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockClientAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockClientAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockClientAPI) Delete(ctx context.Context, id string, opts ...managemen } // Delete indicates an expected call of Delete. -func (mr *MockClientAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockClientAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockClientAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.ClientList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockClientAPI) List(ctx context.Context, opts ...management.RequestOpti } // List indicates an expected call of List. -func (mr *MockClientAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockClientAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockClientAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Client, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockClientAPI) Read(ctx context.Context, id string, opts ...management. } // Read indicates an expected call of Read. -func (mr *MockClientAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockClientAPI)(nil).Read), varargs...) } // RotateSecret mocks base method. func (m *MockClientAPI) RotateSecret(ctx context.Context, id string, opts ...management.RequestOption) (*management.Client, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockClientAPI) RotateSecret(ctx context.Context, id string, opts ...man } // RotateSecret indicates an expected call of RotateSecret. -func (mr *MockClientAPIMockRecorder) RotateSecret(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) RotateSecret(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RotateSecret", reflect.TypeOf((*MockClientAPI)(nil).RotateSecret), varargs...) } // Update mocks base method. func (m *MockClientAPI) Update(ctx context.Context, id string, c *management.Client, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, c} + varargs := []any{ctx, id, c} for _, a := range opts { varargs = append(varargs, a) } @@ -146,8 +147,8 @@ func (m *MockClientAPI) Update(ctx context.Context, id string, c *management.Cli } // Update indicates an expected call of Update. -func (mr *MockClientAPIMockRecorder) Update(ctx, id, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockClientAPIMockRecorder) Update(ctx, id, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, c}, opts...) + varargs := append([]any{ctx, id, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockClientAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/connection_mock.go b/internal/auth0/mock/connection_mock.go index c63d4fb83..6a06b4250 100644 --- a/internal/auth0/mock/connection_mock.go +++ b/internal/auth0/mock/connection_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockConnectionAPI is a mock of ConnectionAPI interface. type MockConnectionAPI struct { ctrl *gomock.Controller recorder *MockConnectionAPIMockRecorder + isgomock struct{} } // MockConnectionAPIMockRecorder is the mock recorder for MockConnectionAPI. @@ -38,7 +39,7 @@ func (m *MockConnectionAPI) EXPECT() *MockConnectionAPIMockRecorder { // Create mocks base method. func (m *MockConnectionAPI) Create(ctx context.Context, c *management.Connection, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, c} + varargs := []any{ctx, c} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockConnectionAPI) Create(ctx context.Context, c *management.Connection } // Create indicates an expected call of Create. -func (mr *MockConnectionAPIMockRecorder) Create(ctx, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) Create(ctx, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, c}, opts...) + varargs := append([]any{ctx, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockConnectionAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockConnectionAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockConnectionAPI) Delete(ctx context.Context, id string, opts ...manag } // Delete indicates an expected call of Delete. -func (mr *MockConnectionAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockConnectionAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockConnectionAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.ConnectionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockConnectionAPI) List(ctx context.Context, opts ...management.Request } // List indicates an expected call of List. -func (mr *MockConnectionAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockConnectionAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockConnectionAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Connection, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockConnectionAPI) Read(ctx context.Context, id string, opts ...managem } // Read indicates an expected call of Read. -func (mr *MockConnectionAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockConnectionAPI)(nil).Read), varargs...) } // ReadByName mocks base method. func (m *MockConnectionAPI) ReadByName(ctx context.Context, id string, opts ...management.RequestOption) (*management.Connection, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockConnectionAPI) ReadByName(ctx context.Context, id string, opts ...m } // ReadByName indicates an expected call of ReadByName. -func (mr *MockConnectionAPIMockRecorder) ReadByName(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) ReadByName(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadByName", reflect.TypeOf((*MockConnectionAPI)(nil).ReadByName), varargs...) } // ReadEnabledClients mocks base method. func (m *MockConnectionAPI) ReadEnabledClients(ctx context.Context, id string, opts ...management.RequestOption) (*management.ConnectionEnabledClientList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -147,16 +148,16 @@ func (m *MockConnectionAPI) ReadEnabledClients(ctx context.Context, id string, o } // ReadEnabledClients indicates an expected call of ReadEnabledClients. -func (mr *MockConnectionAPIMockRecorder) ReadEnabledClients(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) ReadEnabledClients(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadEnabledClients", reflect.TypeOf((*MockConnectionAPI)(nil).ReadEnabledClients), varargs...) } // Update mocks base method. func (m *MockConnectionAPI) Update(ctx context.Context, id string, c *management.Connection, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, c} + varargs := []any{ctx, id, c} for _, a := range opts { varargs = append(varargs, a) } @@ -166,8 +167,8 @@ func (m *MockConnectionAPI) Update(ctx context.Context, id string, c *management } // Update indicates an expected call of Update. -func (mr *MockConnectionAPIMockRecorder) Update(ctx, id, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockConnectionAPIMockRecorder) Update(ctx, id, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, c}, opts...) + varargs := append([]any{ctx, id, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockConnectionAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/custom_domain_mock.go b/internal/auth0/mock/custom_domain_mock.go index 229b30903..1c8ea7906 100644 --- a/internal/auth0/mock/custom_domain_mock.go +++ b/internal/auth0/mock/custom_domain_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockCustomDomainAPI is a mock of CustomDomainAPI interface. type MockCustomDomainAPI struct { ctrl *gomock.Controller recorder *MockCustomDomainAPIMockRecorder + isgomock struct{} } // MockCustomDomainAPIMockRecorder is the mock recorder for MockCustomDomainAPI. @@ -38,7 +39,7 @@ func (m *MockCustomDomainAPI) EXPECT() *MockCustomDomainAPIMockRecorder { // Create mocks base method. func (m *MockCustomDomainAPI) Create(ctx context.Context, c *management.CustomDomain, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, c} + varargs := []any{ctx, c} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockCustomDomainAPI) Create(ctx context.Context, c *management.CustomDo } // Create indicates an expected call of Create. -func (mr *MockCustomDomainAPIMockRecorder) Create(ctx, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) Create(ctx, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, c}, opts...) + varargs := append([]any{ctx, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockCustomDomainAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockCustomDomainAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockCustomDomainAPI) Delete(ctx context.Context, id string, opts ...man } // Delete indicates an expected call of Delete. -func (mr *MockCustomDomainAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockCustomDomainAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockCustomDomainAPI) List(ctx context.Context, opts ...management.RequestOption) ([]*management.CustomDomain, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockCustomDomainAPI) List(ctx context.Context, opts ...management.Reque } // List indicates an expected call of List. -func (mr *MockCustomDomainAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockCustomDomainAPI)(nil).List), varargs...) } // ListWithPagination mocks base method. func (m *MockCustomDomainAPI) ListWithPagination(ctx context.Context, opts ...management.RequestOption) (*management.CustomDomainList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockCustomDomainAPI) ListWithPagination(ctx context.Context, opts ...ma } // ListWithPagination indicates an expected call of ListWithPagination. -func (mr *MockCustomDomainAPIMockRecorder) ListWithPagination(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) ListWithPagination(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListWithPagination", reflect.TypeOf((*MockCustomDomainAPI)(nil).ListWithPagination), varargs...) } // Read mocks base method. func (m *MockCustomDomainAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.CustomDomain, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockCustomDomainAPI) Read(ctx context.Context, id string, opts ...manag } // Read indicates an expected call of Read. -func (mr *MockCustomDomainAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockCustomDomainAPI)(nil).Read), varargs...) } // ReadDefault mocks base method. func (m *MockCustomDomainAPI) ReadDefault(ctx context.Context, opts ...management.RequestOption) (*management.CustomDomain, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -147,16 +148,16 @@ func (m *MockCustomDomainAPI) ReadDefault(ctx context.Context, opts ...managemen } // ReadDefault indicates an expected call of ReadDefault. -func (mr *MockCustomDomainAPIMockRecorder) ReadDefault(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) ReadDefault(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadDefault", reflect.TypeOf((*MockCustomDomainAPI)(nil).ReadDefault), varargs...) } // Update mocks base method. func (m *MockCustomDomainAPI) Update(ctx context.Context, id string, c *management.CustomDomain, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, c} + varargs := []any{ctx, id, c} for _, a := range opts { varargs = append(varargs, a) } @@ -166,16 +167,16 @@ func (m *MockCustomDomainAPI) Update(ctx context.Context, id string, c *manageme } // Update indicates an expected call of Update. -func (mr *MockCustomDomainAPIMockRecorder) Update(ctx, id, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) Update(ctx, id, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, c}, opts...) + varargs := append([]any{ctx, id, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockCustomDomainAPI)(nil).Update), varargs...) } // UpdateDefault mocks base method. func (m *MockCustomDomainAPI) UpdateDefault(ctx context.Context, c *management.CustomDomain, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, c} + varargs := []any{ctx, c} for _, a := range opts { varargs = append(varargs, a) } @@ -185,16 +186,16 @@ func (m *MockCustomDomainAPI) UpdateDefault(ctx context.Context, c *management.C } // UpdateDefault indicates an expected call of UpdateDefault. -func (mr *MockCustomDomainAPIMockRecorder) UpdateDefault(ctx, c interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) UpdateDefault(ctx, c any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, c}, opts...) + varargs := append([]any{ctx, c}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDefault", reflect.TypeOf((*MockCustomDomainAPI)(nil).UpdateDefault), varargs...) } // Verify mocks base method. func (m *MockCustomDomainAPI) Verify(ctx context.Context, id string, opts ...management.RequestOption) (*management.CustomDomain, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -205,8 +206,8 @@ func (m *MockCustomDomainAPI) Verify(ctx context.Context, id string, opts ...man } // Verify indicates an expected call of Verify. -func (mr *MockCustomDomainAPIMockRecorder) Verify(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockCustomDomainAPIMockRecorder) Verify(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Verify", reflect.TypeOf((*MockCustomDomainAPI)(nil).Verify), varargs...) } diff --git a/internal/auth0/mock/email_provider_mock.go b/internal/auth0/mock/email_provider_mock.go index b797209d2..410a1672d 100644 --- a/internal/auth0/mock/email_provider_mock.go +++ b/internal/auth0/mock/email_provider_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockEmailProviderAPI is a mock of EmailProviderAPI interface. type MockEmailProviderAPI struct { ctrl *gomock.Controller recorder *MockEmailProviderAPIMockRecorder + isgomock struct{} } // MockEmailProviderAPIMockRecorder is the mock recorder for MockEmailProviderAPI. @@ -38,7 +39,7 @@ func (m *MockEmailProviderAPI) EXPECT() *MockEmailProviderAPIMockRecorder { // Create mocks base method. func (m *MockEmailProviderAPI) Create(ctx context.Context, ep *management.EmailProvider, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, ep} + varargs := []any{ctx, ep} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockEmailProviderAPI) Create(ctx context.Context, ep *management.EmailP } // Create indicates an expected call of Create. -func (mr *MockEmailProviderAPIMockRecorder) Create(ctx, ep interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailProviderAPIMockRecorder) Create(ctx, ep any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, ep}, opts...) + varargs := append([]any{ctx, ep}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockEmailProviderAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockEmailProviderAPI) Delete(ctx context.Context, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockEmailProviderAPI) Delete(ctx context.Context, opts ...management.Re } // Delete indicates an expected call of Delete. -func (mr *MockEmailProviderAPIMockRecorder) Delete(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailProviderAPIMockRecorder) Delete(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockEmailProviderAPI)(nil).Delete), varargs...) } // Read mocks base method. func (m *MockEmailProviderAPI) Read(ctx context.Context, opts ...management.RequestOption) (*management.EmailProvider, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockEmailProviderAPI) Read(ctx context.Context, opts ...management.Requ } // Read indicates an expected call of Read. -func (mr *MockEmailProviderAPIMockRecorder) Read(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailProviderAPIMockRecorder) Read(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockEmailProviderAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockEmailProviderAPI) Update(ctx context.Context, ep *management.EmailProvider, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, ep} + varargs := []any{ctx, ep} for _, a := range opts { varargs = append(varargs, a) } @@ -106,8 +107,8 @@ func (m *MockEmailProviderAPI) Update(ctx context.Context, ep *management.EmailP } // Update indicates an expected call of Update. -func (mr *MockEmailProviderAPIMockRecorder) Update(ctx, ep interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailProviderAPIMockRecorder) Update(ctx, ep any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, ep}, opts...) + varargs := append([]any{ctx, ep}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockEmailProviderAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/email_template_mock.go b/internal/auth0/mock/email_template_mock.go index db3d52312..c96b6e366 100644 --- a/internal/auth0/mock/email_template_mock.go +++ b/internal/auth0/mock/email_template_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockEmailTemplateAPI is a mock of EmailTemplateAPI interface. type MockEmailTemplateAPI struct { ctrl *gomock.Controller recorder *MockEmailTemplateAPIMockRecorder + isgomock struct{} } // MockEmailTemplateAPIMockRecorder is the mock recorder for MockEmailTemplateAPI. @@ -38,7 +39,7 @@ func (m *MockEmailTemplateAPI) EXPECT() *MockEmailTemplateAPIMockRecorder { // Create mocks base method. func (m *MockEmailTemplateAPI) Create(ctx context.Context, template *management.EmailTemplate, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, template} + varargs := []any{ctx, template} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockEmailTemplateAPI) Create(ctx context.Context, template *management. } // Create indicates an expected call of Create. -func (mr *MockEmailTemplateAPIMockRecorder) Create(ctx, template interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailTemplateAPIMockRecorder) Create(ctx, template any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, template}, opts...) + varargs := append([]any{ctx, template}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockEmailTemplateAPI)(nil).Create), varargs...) } // Read mocks base method. func (m *MockEmailTemplateAPI) Read(ctx context.Context, template string, opts ...management.RequestOption) (*management.EmailTemplate, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, template} + varargs := []any{ctx, template} for _, a := range opts { varargs = append(varargs, a) } @@ -68,16 +69,16 @@ func (m *MockEmailTemplateAPI) Read(ctx context.Context, template string, opts . } // Read indicates an expected call of Read. -func (mr *MockEmailTemplateAPIMockRecorder) Read(ctx, template interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailTemplateAPIMockRecorder) Read(ctx, template any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, template}, opts...) + varargs := append([]any{ctx, template}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockEmailTemplateAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockEmailTemplateAPI) Update(ctx context.Context, template string, e *management.EmailTemplate, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, template, e} + varargs := []any{ctx, template, e} for _, a := range opts { varargs = append(varargs, a) } @@ -87,8 +88,8 @@ func (m *MockEmailTemplateAPI) Update(ctx context.Context, template string, e *m } // Update indicates an expected call of Update. -func (mr *MockEmailTemplateAPIMockRecorder) Update(ctx, template, e interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEmailTemplateAPIMockRecorder) Update(ctx, template, e any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, template, e}, opts...) + varargs := append([]any{ctx, template, e}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockEmailTemplateAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/event_streams_mock.go b/internal/auth0/mock/event_streams_mock.go index c2ea8828c..1f42f603a 100644 --- a/internal/auth0/mock/event_streams_mock.go +++ b/internal/auth0/mock/event_streams_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockEventStreamAPI is a mock of EventStreamAPI interface. type MockEventStreamAPI struct { ctrl *gomock.Controller recorder *MockEventStreamAPIMockRecorder + isgomock struct{} } // MockEventStreamAPIMockRecorder is the mock recorder for MockEventStreamAPI. @@ -38,7 +39,7 @@ func (m *MockEventStreamAPI) EXPECT() *MockEventStreamAPIMockRecorder { // Create mocks base method. func (m *MockEventStreamAPI) Create(ctx context.Context, e *management.EventStream, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, e} + varargs := []any{ctx, e} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockEventStreamAPI) Create(ctx context.Context, e *management.EventStre } // Create indicates an expected call of Create. -func (mr *MockEventStreamAPIMockRecorder) Create(ctx, e interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Create(ctx, e any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, e}, opts...) + varargs := append([]any{ctx, e}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockEventStreamAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockEventStreamAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockEventStreamAPI) Delete(ctx context.Context, id string, opts ...mana } // Delete indicates an expected call of Delete. -func (mr *MockEventStreamAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockEventStreamAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockEventStreamAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.EventStreamList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockEventStreamAPI) List(ctx context.Context, opts ...management.Reques } // List indicates an expected call of List. -func (mr *MockEventStreamAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockEventStreamAPI)(nil).List), varargs...) } // ListDeliveries mocks base method. func (m *MockEventStreamAPI) ListDeliveries(ctx context.Context, id string, opts ...management.RequestOption) (*management.EventDeliveryList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockEventStreamAPI) ListDeliveries(ctx context.Context, id string, opts } // ListDeliveries indicates an expected call of ListDeliveries. -func (mr *MockEventStreamAPIMockRecorder) ListDeliveries(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) ListDeliveries(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDeliveries", reflect.TypeOf((*MockEventStreamAPI)(nil).ListDeliveries), varargs...) } // Read mocks base method. func (m *MockEventStreamAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.EventStream, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockEventStreamAPI) Read(ctx context.Context, id string, opts ...manage } // Read indicates an expected call of Read. -func (mr *MockEventStreamAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockEventStreamAPI)(nil).Read), varargs...) } // ReadDelivery mocks base method. func (m *MockEventStreamAPI) ReadDelivery(ctx context.Context, streamID, deliveryID string, opts ...management.RequestOption) (*management.EventDelivery, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, streamID, deliveryID} + varargs := []any{ctx, streamID, deliveryID} for _, a := range opts { varargs = append(varargs, a) } @@ -147,16 +148,16 @@ func (m *MockEventStreamAPI) ReadDelivery(ctx context.Context, streamID, deliver } // ReadDelivery indicates an expected call of ReadDelivery. -func (mr *MockEventStreamAPIMockRecorder) ReadDelivery(ctx, streamID, deliveryID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) ReadDelivery(ctx, streamID, deliveryID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, streamID, deliveryID}, opts...) + varargs := append([]any{ctx, streamID, deliveryID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReadDelivery", reflect.TypeOf((*MockEventStreamAPI)(nil).ReadDelivery), varargs...) } // Redeliver mocks base method. func (m *MockEventStreamAPI) Redeliver(ctx context.Context, streamID, deliveryID string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, streamID, deliveryID} + varargs := []any{ctx, streamID, deliveryID} for _, a := range opts { varargs = append(varargs, a) } @@ -166,16 +167,16 @@ func (m *MockEventStreamAPI) Redeliver(ctx context.Context, streamID, deliveryID } // Redeliver indicates an expected call of Redeliver. -func (mr *MockEventStreamAPIMockRecorder) Redeliver(ctx, streamID, deliveryID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Redeliver(ctx, streamID, deliveryID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, streamID, deliveryID}, opts...) + varargs := append([]any{ctx, streamID, deliveryID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Redeliver", reflect.TypeOf((*MockEventStreamAPI)(nil).Redeliver), varargs...) } // RedeliverMany mocks base method. func (m *MockEventStreamAPI) RedeliverMany(ctx context.Context, streamID string, req *management.BulkRedeliverRequest, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, streamID, req} + varargs := []any{ctx, streamID, req} for _, a := range opts { varargs = append(varargs, a) } @@ -185,16 +186,16 @@ func (m *MockEventStreamAPI) RedeliverMany(ctx context.Context, streamID string, } // RedeliverMany indicates an expected call of RedeliverMany. -func (mr *MockEventStreamAPIMockRecorder) RedeliverMany(ctx, streamID, req interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) RedeliverMany(ctx, streamID, req any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, streamID, req}, opts...) + varargs := append([]any{ctx, streamID, req}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RedeliverMany", reflect.TypeOf((*MockEventStreamAPI)(nil).RedeliverMany), varargs...) } // Stats mocks base method. func (m *MockEventStreamAPI) Stats(ctx context.Context, id string, opts ...management.RequestOption) (*management.EventStreamStats, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -205,16 +206,16 @@ func (m *MockEventStreamAPI) Stats(ctx context.Context, id string, opts ...manag } // Stats indicates an expected call of Stats. -func (mr *MockEventStreamAPIMockRecorder) Stats(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Stats(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stats", reflect.TypeOf((*MockEventStreamAPI)(nil).Stats), varargs...) } // Test mocks base method. func (m *MockEventStreamAPI) Test(ctx context.Context, id string, testEvent *management.TestEvent, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, testEvent} + varargs := []any{ctx, id, testEvent} for _, a := range opts { varargs = append(varargs, a) } @@ -224,16 +225,16 @@ func (m *MockEventStreamAPI) Test(ctx context.Context, id string, testEvent *man } // Test indicates an expected call of Test. -func (mr *MockEventStreamAPIMockRecorder) Test(ctx, id, testEvent interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Test(ctx, id, testEvent any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, testEvent}, opts...) + varargs := append([]any{ctx, id, testEvent}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Test", reflect.TypeOf((*MockEventStreamAPI)(nil).Test), varargs...) } // Update mocks base method. func (m *MockEventStreamAPI) Update(ctx context.Context, id string, e *management.EventStream, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, e} + varargs := []any{ctx, id, e} for _, a := range opts { varargs = append(varargs, a) } @@ -243,8 +244,8 @@ func (m *MockEventStreamAPI) Update(ctx context.Context, id string, e *managemen } // Update indicates an expected call of Update. -func (mr *MockEventStreamAPIMockRecorder) Update(ctx, id, e interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockEventStreamAPIMockRecorder) Update(ctx, id, e any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, e}, opts...) + varargs := append([]any{ctx, id, e}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockEventStreamAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/flow_mock.go b/internal/auth0/mock/flow_mock.go index 8a0e7c38d..91097bacb 100644 --- a/internal/auth0/mock/flow_mock.go +++ b/internal/auth0/mock/flow_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockFlowAPI is a mock of FlowAPI interface. type MockFlowAPI struct { ctrl *gomock.Controller recorder *MockFlowAPIMockRecorder + isgomock struct{} } // MockFlowAPIMockRecorder is the mock recorder for MockFlowAPI. @@ -38,7 +39,7 @@ func (m *MockFlowAPI) EXPECT() *MockFlowAPIMockRecorder { // Create mocks base method. func (m *MockFlowAPI) Create(ctx context.Context, r *management.Flow, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, r} + varargs := []any{ctx, r} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockFlowAPI) Create(ctx context.Context, r *management.Flow, opts ...ma } // Create indicates an expected call of Create. -func (mr *MockFlowAPIMockRecorder) Create(ctx, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowAPIMockRecorder) Create(ctx, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, r}, opts...) + varargs := append([]any{ctx, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockFlowAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockFlowAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockFlowAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockFlowAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFlowAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockFlowAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.FlowList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockFlowAPI) List(ctx context.Context, opts ...management.RequestOption } // List indicates an expected call of List. -func (mr *MockFlowAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFlowAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockFlowAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Flow, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockFlowAPI) Read(ctx context.Context, id string, opts ...management.Re } // Read indicates an expected call of Read. -func (mr *MockFlowAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockFlowAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockFlowAPI) Update(ctx context.Context, id string, r *management.Flow, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, r} + varargs := []any{ctx, id, r} for _, a := range opts { varargs = append(varargs, a) } @@ -126,9 +127,9 @@ func (m *MockFlowAPI) Update(ctx context.Context, id string, r *management.Flow, } // Update indicates an expected call of Update. -func (mr *MockFlowAPIMockRecorder) Update(ctx, id, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowAPIMockRecorder) Update(ctx, id, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, r}, opts...) + varargs := append([]any{ctx, id, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockFlowAPI)(nil).Update), varargs...) } @@ -136,6 +137,7 @@ func (mr *MockFlowAPIMockRecorder) Update(ctx, id, r interface{}, opts ...interf type MockFlowVaultConnectionAPI struct { ctrl *gomock.Controller recorder *MockFlowVaultConnectionAPIMockRecorder + isgomock struct{} } // MockFlowVaultConnectionAPIMockRecorder is the mock recorder for MockFlowVaultConnectionAPI. @@ -158,7 +160,7 @@ func (m *MockFlowVaultConnectionAPI) EXPECT() *MockFlowVaultConnectionAPIMockRec // CreateConnection mocks base method. func (m *MockFlowVaultConnectionAPI) CreateConnection(ctx context.Context, r *management.FlowVaultConnection, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, r} + varargs := []any{ctx, r} for _, a := range opts { varargs = append(varargs, a) } @@ -168,16 +170,16 @@ func (m *MockFlowVaultConnectionAPI) CreateConnection(ctx context.Context, r *ma } // CreateConnection indicates an expected call of CreateConnection. -func (mr *MockFlowVaultConnectionAPIMockRecorder) CreateConnection(ctx, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowVaultConnectionAPIMockRecorder) CreateConnection(ctx, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, r}, opts...) + varargs := append([]any{ctx, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateConnection", reflect.TypeOf((*MockFlowVaultConnectionAPI)(nil).CreateConnection), varargs...) } // DeleteConnection mocks base method. func (m *MockFlowVaultConnectionAPI) DeleteConnection(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -187,16 +189,16 @@ func (m *MockFlowVaultConnectionAPI) DeleteConnection(ctx context.Context, id st } // DeleteConnection indicates an expected call of DeleteConnection. -func (mr *MockFlowVaultConnectionAPIMockRecorder) DeleteConnection(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowVaultConnectionAPIMockRecorder) DeleteConnection(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteConnection", reflect.TypeOf((*MockFlowVaultConnectionAPI)(nil).DeleteConnection), varargs...) } // GetConnection mocks base method. func (m *MockFlowVaultConnectionAPI) GetConnection(ctx context.Context, id string, opts ...management.RequestOption) (*management.FlowVaultConnection, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -207,16 +209,16 @@ func (m *MockFlowVaultConnectionAPI) GetConnection(ctx context.Context, id strin } // GetConnection indicates an expected call of GetConnection. -func (mr *MockFlowVaultConnectionAPIMockRecorder) GetConnection(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowVaultConnectionAPIMockRecorder) GetConnection(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConnection", reflect.TypeOf((*MockFlowVaultConnectionAPI)(nil).GetConnection), varargs...) } // GetConnectionList mocks base method. func (m *MockFlowVaultConnectionAPI) GetConnectionList(ctx context.Context, opts ...management.RequestOption) (*management.FlowVaultConnectionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -227,16 +229,16 @@ func (m *MockFlowVaultConnectionAPI) GetConnectionList(ctx context.Context, opts } // GetConnectionList indicates an expected call of GetConnectionList. -func (mr *MockFlowVaultConnectionAPIMockRecorder) GetConnectionList(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowVaultConnectionAPIMockRecorder) GetConnectionList(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConnectionList", reflect.TypeOf((*MockFlowVaultConnectionAPI)(nil).GetConnectionList), varargs...) } // UpdateConnection mocks base method. func (m *MockFlowVaultConnectionAPI) UpdateConnection(ctx context.Context, id string, r *management.FlowVaultConnection, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, r} + varargs := []any{ctx, id, r} for _, a := range opts { varargs = append(varargs, a) } @@ -246,8 +248,8 @@ func (m *MockFlowVaultConnectionAPI) UpdateConnection(ctx context.Context, id st } // UpdateConnection indicates an expected call of UpdateConnection. -func (mr *MockFlowVaultConnectionAPIMockRecorder) UpdateConnection(ctx, id, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFlowVaultConnectionAPIMockRecorder) UpdateConnection(ctx, id, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, r}, opts...) + varargs := append([]any{ctx, id, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateConnection", reflect.TypeOf((*MockFlowVaultConnectionAPI)(nil).UpdateConnection), varargs...) } diff --git a/internal/auth0/mock/form_mock.go b/internal/auth0/mock/form_mock.go index 73161402a..7d33d9d3c 100644 --- a/internal/auth0/mock/form_mock.go +++ b/internal/auth0/mock/form_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockFormAPI is a mock of FormAPI interface. type MockFormAPI struct { ctrl *gomock.Controller recorder *MockFormAPIMockRecorder + isgomock struct{} } // MockFormAPIMockRecorder is the mock recorder for MockFormAPI. @@ -38,7 +39,7 @@ func (m *MockFormAPI) EXPECT() *MockFormAPIMockRecorder { // Create mocks base method. func (m *MockFormAPI) Create(ctx context.Context, r *management.Form, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, r} + varargs := []any{ctx, r} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockFormAPI) Create(ctx context.Context, r *management.Form, opts ...ma } // Create indicates an expected call of Create. -func (mr *MockFormAPIMockRecorder) Create(ctx, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFormAPIMockRecorder) Create(ctx, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, r}, opts...) + varargs := append([]any{ctx, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockFormAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockFormAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockFormAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockFormAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFormAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFormAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockFormAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.FormList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockFormAPI) List(ctx context.Context, opts ...management.RequestOption } // List indicates an expected call of List. -func (mr *MockFormAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFormAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFormAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockFormAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Form, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockFormAPI) Read(ctx context.Context, id string, opts ...management.Re } // Read indicates an expected call of Read. -func (mr *MockFormAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFormAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockFormAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockFormAPI) Update(ctx context.Context, id string, r *management.Form, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, r} + varargs := []any{ctx, id, r} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockFormAPI) Update(ctx context.Context, id string, r *management.Form, } // Update indicates an expected call of Update. -func (mr *MockFormAPIMockRecorder) Update(ctx, id, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockFormAPIMockRecorder) Update(ctx, id, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, r}, opts...) + varargs := append([]any{ctx, id, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockFormAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/log_mock.go b/internal/auth0/mock/log_mock.go index 70dc7d05e..b18f91b19 100644 --- a/internal/auth0/mock/log_mock.go +++ b/internal/auth0/mock/log_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockLogAPI is a mock of LogAPI interface. type MockLogAPI struct { ctrl *gomock.Controller recorder *MockLogAPIMockRecorder + isgomock struct{} } // MockLogAPIMockRecorder is the mock recorder for MockLogAPI. @@ -38,7 +39,7 @@ func (m *MockLogAPI) EXPECT() *MockLogAPIMockRecorder { // List mocks base method. func (m *MockLogAPI) List(ctx context.Context, opts ...management.RequestOption) ([]*management.Log, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockLogAPI) List(ctx context.Context, opts ...management.RequestOption) } // List indicates an expected call of List. -func (mr *MockLogAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockLogAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockLogAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Log, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -69,16 +70,16 @@ func (m *MockLogAPI) Read(ctx context.Context, id string, opts ...management.Req } // Read indicates an expected call of Read. -func (mr *MockLogAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockLogAPI)(nil).Read), varargs...) } // Search mocks base method. func (m *MockLogAPI) Search(ctx context.Context, opts ...management.RequestOption) ([]*management.Log, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -89,8 +90,8 @@ func (m *MockLogAPI) Search(ctx context.Context, opts ...management.RequestOptio } // Search indicates an expected call of Search. -func (mr *MockLogAPIMockRecorder) Search(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogAPIMockRecorder) Search(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Search", reflect.TypeOf((*MockLogAPI)(nil).Search), varargs...) } diff --git a/internal/auth0/mock/log_stream_mock.go b/internal/auth0/mock/log_stream_mock.go index 4018c77c6..ed860bed3 100644 --- a/internal/auth0/mock/log_stream_mock.go +++ b/internal/auth0/mock/log_stream_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockLogStreamAPI is a mock of LogStreamAPI interface. type MockLogStreamAPI struct { ctrl *gomock.Controller recorder *MockLogStreamAPIMockRecorder + isgomock struct{} } // MockLogStreamAPIMockRecorder is the mock recorder for MockLogStreamAPI. @@ -38,7 +39,7 @@ func (m *MockLogStreamAPI) EXPECT() *MockLogStreamAPIMockRecorder { // Create mocks base method. func (m *MockLogStreamAPI) Create(ctx context.Context, ls *management.LogStream, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, ls} + varargs := []any{ctx, ls} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockLogStreamAPI) Create(ctx context.Context, ls *management.LogStream, } // Create indicates an expected call of Create. -func (mr *MockLogStreamAPIMockRecorder) Create(ctx, ls interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogStreamAPIMockRecorder) Create(ctx, ls any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, ls}, opts...) + varargs := append([]any{ctx, ls}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockLogStreamAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockLogStreamAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockLogStreamAPI) Delete(ctx context.Context, id string, opts ...manage } // Delete indicates an expected call of Delete. -func (mr *MockLogStreamAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogStreamAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockLogStreamAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockLogStreamAPI) List(ctx context.Context, opts ...management.RequestOption) ([]*management.LogStream, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockLogStreamAPI) List(ctx context.Context, opts ...management.RequestO } // List indicates an expected call of List. -func (mr *MockLogStreamAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogStreamAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockLogStreamAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockLogStreamAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.LogStream, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockLogStreamAPI) Read(ctx context.Context, id string, opts ...manageme } // Read indicates an expected call of Read. -func (mr *MockLogStreamAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogStreamAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockLogStreamAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockLogStreamAPI) Update(ctx context.Context, id string, ls *management.LogStream, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, ls} + varargs := []any{ctx, id, ls} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockLogStreamAPI) Update(ctx context.Context, id string, ls *management } // Update indicates an expected call of Update. -func (mr *MockLogStreamAPIMockRecorder) Update(ctx, id, ls interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockLogStreamAPIMockRecorder) Update(ctx, id, ls any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, ls}, opts...) + varargs := append([]any{ctx, id, ls}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockLogStreamAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/network_acl_mock.go b/internal/auth0/mock/network_acl_mock.go index 3415e4fc4..9a43c8c54 100644 --- a/internal/auth0/mock/network_acl_mock.go +++ b/internal/auth0/mock/network_acl_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockNetworkACLAPI is a mock of NetworkACLAPI interface. type MockNetworkACLAPI struct { ctrl *gomock.Controller recorder *MockNetworkACLAPIMockRecorder + isgomock struct{} } // MockNetworkACLAPIMockRecorder is the mock recorder for MockNetworkACLAPI. @@ -38,7 +39,7 @@ func (m *MockNetworkACLAPI) EXPECT() *MockNetworkACLAPIMockRecorder { // Create mocks base method. func (m *MockNetworkACLAPI) Create(ctx context.Context, n *management.NetworkACL, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, n} + varargs := []any{ctx, n} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockNetworkACLAPI) Create(ctx context.Context, n *management.NetworkACL } // Create indicates an expected call of Create. -func (mr *MockNetworkACLAPIMockRecorder) Create(ctx, n interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) Create(ctx, n any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, n}, opts...) + varargs := append([]any{ctx, n}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockNetworkACLAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockNetworkACLAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockNetworkACLAPI) Delete(ctx context.Context, id string, opts ...manag } // Delete indicates an expected call of Delete. -func (mr *MockNetworkACLAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockNetworkACLAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockNetworkACLAPI) List(ctx context.Context, opts ...management.RequestOption) ([]*management.NetworkACL, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockNetworkACLAPI) List(ctx context.Context, opts ...management.Request } // List indicates an expected call of List. -func (mr *MockNetworkACLAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockNetworkACLAPI)(nil).List), varargs...) } // Patch mocks base method. func (m *MockNetworkACLAPI) Patch(ctx context.Context, id string, n *management.NetworkACL, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, n} + varargs := []any{ctx, id, n} for _, a := range opts { varargs = append(varargs, a) } @@ -106,16 +107,16 @@ func (m *MockNetworkACLAPI) Patch(ctx context.Context, id string, n *management. } // Patch indicates an expected call of Patch. -func (mr *MockNetworkACLAPIMockRecorder) Patch(ctx, id, n interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) Patch(ctx, id, n any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, n}, opts...) + varargs := append([]any{ctx, id, n}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockNetworkACLAPI)(nil).Patch), varargs...) } // Read mocks base method. func (m *MockNetworkACLAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.NetworkACL, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -126,16 +127,16 @@ func (m *MockNetworkACLAPI) Read(ctx context.Context, id string, opts ...managem } // Read indicates an expected call of Read. -func (mr *MockNetworkACLAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockNetworkACLAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockNetworkACLAPI) Update(ctx context.Context, id string, n *management.NetworkACL, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, n} + varargs := []any{ctx, id, n} for _, a := range opts { varargs = append(varargs, a) } @@ -145,8 +146,8 @@ func (m *MockNetworkACLAPI) Update(ctx context.Context, id string, n *management } // Update indicates an expected call of Update. -func (mr *MockNetworkACLAPIMockRecorder) Update(ctx, id, n interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockNetworkACLAPIMockRecorder) Update(ctx, id, n any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, n}, opts...) + varargs := append([]any{ctx, id, n}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockNetworkACLAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/organization_mock.go b/internal/auth0/mock/organization_mock.go index a1b088717..87474e6cb 100644 --- a/internal/auth0/mock/organization_mock.go +++ b/internal/auth0/mock/organization_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockOrganizationAPI is a mock of OrganizationAPI interface. type MockOrganizationAPI struct { ctrl *gomock.Controller recorder *MockOrganizationAPIMockRecorder + isgomock struct{} } // MockOrganizationAPIMockRecorder is the mock recorder for MockOrganizationAPI. @@ -38,7 +39,7 @@ func (m *MockOrganizationAPI) EXPECT() *MockOrganizationAPIMockRecorder { // Connections mocks base method. func (m *MockOrganizationAPI) Connections(ctx context.Context, id string, opts ...management.RequestOption) (*management.OrganizationConnectionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockOrganizationAPI) Connections(ctx context.Context, id string, opts . } // Connections indicates an expected call of Connections. -func (mr *MockOrganizationAPIMockRecorder) Connections(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Connections(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Connections", reflect.TypeOf((*MockOrganizationAPI)(nil).Connections), varargs...) } // Create mocks base method. func (m *MockOrganizationAPI) Create(ctx context.Context, o *management.Organization, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, o} + varargs := []any{ctx, o} for _, a := range opts { varargs = append(varargs, a) } @@ -68,16 +69,16 @@ func (m *MockOrganizationAPI) Create(ctx context.Context, o *management.Organiza } // Create indicates an expected call of Create. -func (mr *MockOrganizationAPIMockRecorder) Create(ctx, o interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Create(ctx, o any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, o}, opts...) + varargs := append([]any{ctx, o}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockOrganizationAPI)(nil).Create), varargs...) } // CreateDiscoveryDomain mocks base method. func (m *MockOrganizationAPI) CreateDiscoveryDomain(ctx context.Context, id string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, d} + varargs := []any{ctx, id, d} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockOrganizationAPI) CreateDiscoveryDomain(ctx context.Context, id stri } // CreateDiscoveryDomain indicates an expected call of CreateDiscoveryDomain. -func (mr *MockOrganizationAPIMockRecorder) CreateDiscoveryDomain(ctx, id, d interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) CreateDiscoveryDomain(ctx, id, d any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, d}, opts...) + varargs := append([]any{ctx, id, d}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).CreateDiscoveryDomain), varargs...) } // CreateInvitation mocks base method. func (m *MockOrganizationAPI) CreateInvitation(ctx context.Context, id string, i *management.OrganizationInvitation, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, i} + varargs := []any{ctx, id, i} for _, a := range opts { varargs = append(varargs, a) } @@ -106,16 +107,16 @@ func (m *MockOrganizationAPI) CreateInvitation(ctx context.Context, id string, i } // CreateInvitation indicates an expected call of CreateInvitation. -func (mr *MockOrganizationAPIMockRecorder) CreateInvitation(ctx, id, i interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) CreateInvitation(ctx, id, i any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, i}, opts...) + varargs := append([]any{ctx, id, i}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateInvitation", reflect.TypeOf((*MockOrganizationAPI)(nil).CreateInvitation), varargs...) } // Delete mocks base method. func (m *MockOrganizationAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -125,16 +126,16 @@ func (m *MockOrganizationAPI) Delete(ctx context.Context, id string, opts ...man } // Delete indicates an expected call of Delete. -func (mr *MockOrganizationAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockOrganizationAPI)(nil).Delete), varargs...) } // DeleteDiscoveryDomain mocks base method. func (m *MockOrganizationAPI) DeleteDiscoveryDomain(ctx context.Context, id, domainID string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, domainID} + varargs := []any{ctx, id, domainID} for _, a := range opts { varargs = append(varargs, a) } @@ -144,16 +145,16 @@ func (m *MockOrganizationAPI) DeleteDiscoveryDomain(ctx context.Context, id, dom } // DeleteDiscoveryDomain indicates an expected call of DeleteDiscoveryDomain. -func (mr *MockOrganizationAPIMockRecorder) DeleteDiscoveryDomain(ctx, id, domainID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) DeleteDiscoveryDomain(ctx, id, domainID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, domainID}, opts...) + varargs := append([]any{ctx, id, domainID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).DeleteDiscoveryDomain), varargs...) } // DeleteInvitation mocks base method. func (m *MockOrganizationAPI) DeleteInvitation(ctx context.Context, id, invitationID string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, invitationID} + varargs := []any{ctx, id, invitationID} for _, a := range opts { varargs = append(varargs, a) } @@ -163,16 +164,16 @@ func (m *MockOrganizationAPI) DeleteInvitation(ctx context.Context, id, invitati } // DeleteInvitation indicates an expected call of DeleteInvitation. -func (mr *MockOrganizationAPIMockRecorder) DeleteInvitation(ctx, id, invitationID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) DeleteInvitation(ctx, id, invitationID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, invitationID}, opts...) + varargs := append([]any{ctx, id, invitationID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteInvitation", reflect.TypeOf((*MockOrganizationAPI)(nil).DeleteInvitation), varargs...) } // DiscoveryDomain mocks base method. func (m *MockOrganizationAPI) DiscoveryDomain(ctx context.Context, id, domainID string, opts ...management.RequestOption) (*management.OrganizationDiscoveryDomain, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, domainID} + varargs := []any{ctx, id, domainID} for _, a := range opts { varargs = append(varargs, a) } @@ -183,16 +184,16 @@ func (m *MockOrganizationAPI) DiscoveryDomain(ctx context.Context, id, domainID } // DiscoveryDomain indicates an expected call of DiscoveryDomain. -func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomain(ctx, id, domainID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomain(ctx, id, domainID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, domainID}, opts...) + varargs := append([]any{ctx, id, domainID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).DiscoveryDomain), varargs...) } // DiscoveryDomains mocks base method. func (m *MockOrganizationAPI) DiscoveryDomains(ctx context.Context, id string, opts ...management.RequestOption) (*management.DiscoveryDomainList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -203,16 +204,16 @@ func (m *MockOrganizationAPI) DiscoveryDomains(ctx context.Context, id string, o } // DiscoveryDomains indicates an expected call of DiscoveryDomains. -func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomains(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomains(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DiscoveryDomains", reflect.TypeOf((*MockOrganizationAPI)(nil).DiscoveryDomains), varargs...) } // Invitation mocks base method. func (m *MockOrganizationAPI) Invitation(ctx context.Context, id, invitationID string, opts ...management.RequestOption) (*management.OrganizationInvitation, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, invitationID} + varargs := []any{ctx, id, invitationID} for _, a := range opts { varargs = append(varargs, a) } @@ -223,16 +224,16 @@ func (m *MockOrganizationAPI) Invitation(ctx context.Context, id, invitationID s } // Invitation indicates an expected call of Invitation. -func (mr *MockOrganizationAPIMockRecorder) Invitation(ctx, id, invitationID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Invitation(ctx, id, invitationID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, invitationID}, opts...) + varargs := append([]any{ctx, id, invitationID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Invitation", reflect.TypeOf((*MockOrganizationAPI)(nil).Invitation), varargs...) } // Invitations mocks base method. func (m *MockOrganizationAPI) Invitations(ctx context.Context, id string, opts ...management.RequestOption) (*management.OrganizationInvitationList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -243,16 +244,16 @@ func (m *MockOrganizationAPI) Invitations(ctx context.Context, id string, opts . } // Invitations indicates an expected call of Invitations. -func (mr *MockOrganizationAPIMockRecorder) Invitations(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Invitations(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Invitations", reflect.TypeOf((*MockOrganizationAPI)(nil).Invitations), varargs...) } // List mocks base method. func (m *MockOrganizationAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.OrganizationList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -263,16 +264,16 @@ func (m *MockOrganizationAPI) List(ctx context.Context, opts ...management.Reque } // List indicates an expected call of List. -func (mr *MockOrganizationAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockOrganizationAPI)(nil).List), varargs...) } // MemberRoles mocks base method. func (m *MockOrganizationAPI) MemberRoles(ctx context.Context, id, userID string, opts ...management.RequestOption) (*management.OrganizationMemberRoleList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, userID} + varargs := []any{ctx, id, userID} for _, a := range opts { varargs = append(varargs, a) } @@ -283,16 +284,16 @@ func (m *MockOrganizationAPI) MemberRoles(ctx context.Context, id, userID string } // MemberRoles indicates an expected call of MemberRoles. -func (mr *MockOrganizationAPIMockRecorder) MemberRoles(ctx, id, userID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) MemberRoles(ctx, id, userID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, userID}, opts...) + varargs := append([]any{ctx, id, userID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MemberRoles", reflect.TypeOf((*MockOrganizationAPI)(nil).MemberRoles), varargs...) } // Members mocks base method. func (m *MockOrganizationAPI) Members(ctx context.Context, id string, opts ...management.RequestOption) (*management.OrganizationMemberList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -303,16 +304,16 @@ func (m *MockOrganizationAPI) Members(ctx context.Context, id string, opts ...ma } // Members indicates an expected call of Members. -func (mr *MockOrganizationAPIMockRecorder) Members(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Members(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Members", reflect.TypeOf((*MockOrganizationAPI)(nil).Members), varargs...) } // Read mocks base method. func (m *MockOrganizationAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Organization, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -323,16 +324,16 @@ func (m *MockOrganizationAPI) Read(ctx context.Context, id string, opts ...manag } // Read indicates an expected call of Read. -func (mr *MockOrganizationAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockOrganizationAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockOrganizationAPI) Update(ctx context.Context, id string, o *management.Organization, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, o} + varargs := []any{ctx, id, o} for _, a := range opts { varargs = append(varargs, a) } @@ -342,16 +343,16 @@ func (m *MockOrganizationAPI) Update(ctx context.Context, id string, o *manageme } // Update indicates an expected call of Update. -func (mr *MockOrganizationAPIMockRecorder) Update(ctx, id, o interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) Update(ctx, id, o any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, o}, opts...) + varargs := append([]any{ctx, id, o}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockOrganizationAPI)(nil).Update), varargs...) } // UpdateDiscoveryDomain mocks base method. func (m *MockOrganizationAPI) UpdateDiscoveryDomain(ctx context.Context, id, domainID string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, domainID, d} + varargs := []any{ctx, id, domainID, d} for _, a := range opts { varargs = append(varargs, a) } @@ -361,8 +362,8 @@ func (m *MockOrganizationAPI) UpdateDiscoveryDomain(ctx context.Context, id, dom } // UpdateDiscoveryDomain indicates an expected call of UpdateDiscoveryDomain. -func (mr *MockOrganizationAPIMockRecorder) UpdateDiscoveryDomain(ctx, id, domainID, d interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockOrganizationAPIMockRecorder) UpdateDiscoveryDomain(ctx, id, domainID, d any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, domainID, d}, opts...) + varargs := append([]any{ctx, id, domainID, d}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).UpdateDiscoveryDomain), varargs...) } diff --git a/internal/auth0/mock/phone_notification_template_mock.go b/internal/auth0/mock/phone_notification_template_mock.go index 51e1fdcae..634923e10 100644 --- a/internal/auth0/mock/phone_notification_template_mock.go +++ b/internal/auth0/mock/phone_notification_template_mock.go @@ -10,13 +10,14 @@ import ( management "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockPhoneNotificationTemplateAPI is a mock of PhoneNotificationTemplateAPI interface. type MockPhoneNotificationTemplateAPI struct { ctrl *gomock.Controller recorder *MockPhoneNotificationTemplateAPIMockRecorder + isgomock struct{} } // MockPhoneNotificationTemplateAPIMockRecorder is the mock recorder for MockPhoneNotificationTemplateAPI. @@ -39,7 +40,7 @@ func (m *MockPhoneNotificationTemplateAPI) EXPECT() *MockPhoneNotificationTempla // List mocks base method. func (m *MockPhoneNotificationTemplateAPI) List(ctx context.Context, request *management.ListPhoneTemplatesRequestParameters, opts ...option.RequestOption) (*management.ListPhoneTemplatesResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -50,8 +51,8 @@ func (m *MockPhoneNotificationTemplateAPI) List(ctx context.Context, request *ma } // List indicates an expected call of List. -func (mr *MockPhoneNotificationTemplateAPIMockRecorder) List(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockPhoneNotificationTemplateAPIMockRecorder) List(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockPhoneNotificationTemplateAPI)(nil).List), varargs...) } diff --git a/internal/auth0/mock/refresh_token_mock.go b/internal/auth0/mock/refresh_token_mock.go index fb46fb1d9..69c19d629 100644 --- a/internal/auth0/mock/refresh_token_mock.go +++ b/internal/auth0/mock/refresh_token_mock.go @@ -10,13 +10,14 @@ import ( management "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockRefreshTokenAPIV3 is a mock of RefreshTokenAPIV3 interface. type MockRefreshTokenAPIV3 struct { ctrl *gomock.Controller recorder *MockRefreshTokenAPIV3MockRecorder + isgomock struct{} } // MockRefreshTokenAPIV3MockRecorder is the mock recorder for MockRefreshTokenAPIV3. @@ -39,7 +40,7 @@ func (m *MockRefreshTokenAPIV3) EXPECT() *MockRefreshTokenAPIV3MockRecorder { // Delete mocks base method. func (m *MockRefreshTokenAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockRefreshTokenAPIV3) Delete(ctx context.Context, id string, opts ...o } // Delete indicates an expected call of Delete. -func (mr *MockRefreshTokenAPIV3MockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRefreshTokenAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRefreshTokenAPIV3)(nil).Delete), varargs...) } // Get mocks base method. func (m *MockRefreshTokenAPIV3) Get(ctx context.Context, id string, opts ...option.RequestOption) (*management.GetRefreshTokenResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -69,16 +70,16 @@ func (m *MockRefreshTokenAPIV3) Get(ctx context.Context, id string, opts ...opti } // Get indicates an expected call of Get. -func (mr *MockRefreshTokenAPIV3MockRecorder) Get(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRefreshTokenAPIV3MockRecorder) Get(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockRefreshTokenAPIV3)(nil).Get), varargs...) } // Revoke mocks base method. func (m *MockRefreshTokenAPIV3) Revoke(ctx context.Context, request *management.RevokeRefreshTokensRequestContent, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, request} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } @@ -88,16 +89,16 @@ func (m *MockRefreshTokenAPIV3) Revoke(ctx context.Context, request *management. } // Revoke indicates an expected call of Revoke. -func (mr *MockRefreshTokenAPIV3MockRecorder) Revoke(ctx, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRefreshTokenAPIV3MockRecorder) Revoke(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, request}, opts...) + varargs := append([]any{ctx, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Revoke", reflect.TypeOf((*MockRefreshTokenAPIV3)(nil).Revoke), varargs...) } // Update mocks base method. func (m *MockRefreshTokenAPIV3) Update(ctx context.Context, id string, request *management.UpdateRefreshTokenRequestContent, opts ...option.RequestOption) (*management.UpdateRefreshTokenResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -108,8 +109,8 @@ func (m *MockRefreshTokenAPIV3) Update(ctx context.Context, id string, request * } // Update indicates an expected call of Update. -func (mr *MockRefreshTokenAPIV3MockRecorder) Update(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRefreshTokenAPIV3MockRecorder) Update(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRefreshTokenAPIV3)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/resource_server_mock.go b/internal/auth0/mock/resource_server_mock.go index e73afb323..bccda63f4 100644 --- a/internal/auth0/mock/resource_server_mock.go +++ b/internal/auth0/mock/resource_server_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockResourceServerAPI is a mock of ResourceServerAPI interface. type MockResourceServerAPI struct { ctrl *gomock.Controller recorder *MockResourceServerAPIMockRecorder + isgomock struct{} } // MockResourceServerAPIMockRecorder is the mock recorder for MockResourceServerAPI. @@ -38,7 +39,7 @@ func (m *MockResourceServerAPI) EXPECT() *MockResourceServerAPIMockRecorder { // Create mocks base method. func (m *MockResourceServerAPI) Create(ctx context.Context, rs *management.ResourceServer, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, rs} + varargs := []any{ctx, rs} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockResourceServerAPI) Create(ctx context.Context, rs *management.Resou } // Create indicates an expected call of Create. -func (mr *MockResourceServerAPIMockRecorder) Create(ctx, rs interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockResourceServerAPIMockRecorder) Create(ctx, rs any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, rs}, opts...) + varargs := append([]any{ctx, rs}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockResourceServerAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockResourceServerAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockResourceServerAPI) Delete(ctx context.Context, id string, opts ...m } // Delete indicates an expected call of Delete. -func (mr *MockResourceServerAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockResourceServerAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockResourceServerAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockResourceServerAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.ResourceServerList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockResourceServerAPI) List(ctx context.Context, opts ...management.Req } // List indicates an expected call of List. -func (mr *MockResourceServerAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockResourceServerAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockResourceServerAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockResourceServerAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.ResourceServer, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockResourceServerAPI) Read(ctx context.Context, id string, opts ...man } // Read indicates an expected call of Read. -func (mr *MockResourceServerAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockResourceServerAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockResourceServerAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockResourceServerAPI) Update(ctx context.Context, id string, rs *management.ResourceServer, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, rs} + varargs := []any{ctx, id, rs} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockResourceServerAPI) Update(ctx context.Context, id string, rs *manag } // Update indicates an expected call of Update. -func (mr *MockResourceServerAPIMockRecorder) Update(ctx, id, rs interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockResourceServerAPIMockRecorder) Update(ctx, id, rs any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, rs}, opts...) + varargs := append([]any{ctx, id, rs}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockResourceServerAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/roles_mock.go b/internal/auth0/mock/roles_mock.go index 4416e45d0..98544eac3 100644 --- a/internal/auth0/mock/roles_mock.go +++ b/internal/auth0/mock/roles_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockRoleAPI is a mock of RoleAPI interface. type MockRoleAPI struct { ctrl *gomock.Controller recorder *MockRoleAPIMockRecorder + isgomock struct{} } // MockRoleAPIMockRecorder is the mock recorder for MockRoleAPI. @@ -38,7 +39,7 @@ func (m *MockRoleAPI) EXPECT() *MockRoleAPIMockRecorder { // AssociatePermissions mocks base method. func (m *MockRoleAPI) AssociatePermissions(ctx context.Context, id string, permissions []*management.Permission, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, permissions} + varargs := []any{ctx, id, permissions} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockRoleAPI) AssociatePermissions(ctx context.Context, id string, permi } // AssociatePermissions indicates an expected call of AssociatePermissions. -func (mr *MockRoleAPIMockRecorder) AssociatePermissions(ctx, id, permissions interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) AssociatePermissions(ctx, id, permissions any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, permissions}, opts...) + varargs := append([]any{ctx, id, permissions}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AssociatePermissions", reflect.TypeOf((*MockRoleAPI)(nil).AssociatePermissions), varargs...) } // Create mocks base method. func (m *MockRoleAPI) Create(ctx context.Context, r *management.Role, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, r} + varargs := []any{ctx, r} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockRoleAPI) Create(ctx context.Context, r *management.Role, opts ...ma } // Create indicates an expected call of Create. -func (mr *MockRoleAPIMockRecorder) Create(ctx, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) Create(ctx, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, r}, opts...) + varargs := append([]any{ctx, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockRoleAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockRoleAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -86,16 +87,16 @@ func (m *MockRoleAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockRoleAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRoleAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockRoleAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.RoleList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -106,16 +107,16 @@ func (m *MockRoleAPI) List(ctx context.Context, opts ...management.RequestOption } // List indicates an expected call of List. -func (mr *MockRoleAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRoleAPI)(nil).List), varargs...) } // Permissions mocks base method. func (m *MockRoleAPI) Permissions(ctx context.Context, id string, opts ...management.RequestOption) (*management.PermissionList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -126,16 +127,16 @@ func (m *MockRoleAPI) Permissions(ctx context.Context, id string, opts ...manage } // Permissions indicates an expected call of Permissions. -func (mr *MockRoleAPIMockRecorder) Permissions(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) Permissions(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Permissions", reflect.TypeOf((*MockRoleAPI)(nil).Permissions), varargs...) } // Read mocks base method. func (m *MockRoleAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Role, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -146,16 +147,16 @@ func (m *MockRoleAPI) Read(ctx context.Context, id string, opts ...management.Re } // Read indicates an expected call of Read. -func (mr *MockRoleAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockRoleAPI)(nil).Read), varargs...) } // RemovePermissions mocks base method. func (m *MockRoleAPI) RemovePermissions(ctx context.Context, id string, permissions []*management.Permission, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, permissions} + varargs := []any{ctx, id, permissions} for _, a := range opts { varargs = append(varargs, a) } @@ -165,16 +166,16 @@ func (m *MockRoleAPI) RemovePermissions(ctx context.Context, id string, permissi } // RemovePermissions indicates an expected call of RemovePermissions. -func (mr *MockRoleAPIMockRecorder) RemovePermissions(ctx, id, permissions interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) RemovePermissions(ctx, id, permissions any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, permissions}, opts...) + varargs := append([]any{ctx, id, permissions}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePermissions", reflect.TypeOf((*MockRoleAPI)(nil).RemovePermissions), varargs...) } // Update mocks base method. func (m *MockRoleAPI) Update(ctx context.Context, id string, r *management.Role, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, r} + varargs := []any{ctx, id, r} for _, a := range opts { varargs = append(varargs, a) } @@ -184,8 +185,8 @@ func (m *MockRoleAPI) Update(ctx context.Context, id string, r *management.Role, } // Update indicates an expected call of Update. -func (mr *MockRoleAPIMockRecorder) Update(ctx, id, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRoleAPIMockRecorder) Update(ctx, id, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, r}, opts...) + varargs := append([]any{ctx, id, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRoleAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/rule_mock.go b/internal/auth0/mock/rule_mock.go index 7c2a60819..82bfd98ef 100644 --- a/internal/auth0/mock/rule_mock.go +++ b/internal/auth0/mock/rule_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockRuleAPI is a mock of RuleAPI interface. type MockRuleAPI struct { ctrl *gomock.Controller recorder *MockRuleAPIMockRecorder + isgomock struct{} } // MockRuleAPIMockRecorder is the mock recorder for MockRuleAPI. @@ -38,7 +39,7 @@ func (m *MockRuleAPI) EXPECT() *MockRuleAPIMockRecorder { // Create mocks base method. func (m *MockRuleAPI) Create(ctx context.Context, r *management.Rule, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, r} + varargs := []any{ctx, r} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockRuleAPI) Create(ctx context.Context, r *management.Rule, opts ...ma } // Create indicates an expected call of Create. -func (mr *MockRuleAPIMockRecorder) Create(ctx, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRuleAPIMockRecorder) Create(ctx, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, r}, opts...) + varargs := append([]any{ctx, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockRuleAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockRuleAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockRuleAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockRuleAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRuleAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockRuleAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockRuleAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.RuleList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockRuleAPI) List(ctx context.Context, opts ...management.RequestOption } // List indicates an expected call of List. -func (mr *MockRuleAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRuleAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockRuleAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockRuleAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Rule, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockRuleAPI) Read(ctx context.Context, id string, opts ...management.Re } // Read indicates an expected call of Read. -func (mr *MockRuleAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRuleAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockRuleAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockRuleAPI) Update(ctx context.Context, id string, r *management.Rule, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, r} + varargs := []any{ctx, id, r} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockRuleAPI) Update(ctx context.Context, id string, r *management.Rule, } // Update indicates an expected call of Update. -func (mr *MockRuleAPIMockRecorder) Update(ctx, id, r interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockRuleAPIMockRecorder) Update(ctx, id, r any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, r}, opts...) + varargs := append([]any{ctx, id, r}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockRuleAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/self_service_profiles.go b/internal/auth0/mock/self_service_profiles.go index 40f4a8aa8..2ca3b81d1 100644 --- a/internal/auth0/mock/self_service_profiles.go +++ b/internal/auth0/mock/self_service_profiles.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockSelfServiceProfileAPI is a mock of SelfServiceProfileAPI interface. type MockSelfServiceProfileAPI struct { ctrl *gomock.Controller recorder *MockSelfServiceProfileAPIMockRecorder + isgomock struct{} } // MockSelfServiceProfileAPIMockRecorder is the mock recorder for MockSelfServiceProfileAPI. @@ -38,7 +39,7 @@ func (m *MockSelfServiceProfileAPI) EXPECT() *MockSelfServiceProfileAPIMockRecor // Create mocks base method. func (m *MockSelfServiceProfileAPI) Create(ctx context.Context, p *management.SelfServiceProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, p} + varargs := []any{ctx, p} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockSelfServiceProfileAPI) Create(ctx context.Context, p *management.Se } // Create indicates an expected call of Create. -func (mr *MockSelfServiceProfileAPIMockRecorder) Create(ctx, p interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) Create(ctx, p any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, p}, opts...) + varargs := append([]any{ctx, p}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockSelfServiceProfileAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,36 +68,36 @@ func (m *MockSelfServiceProfileAPI) Delete(ctx context.Context, id string, opts } // Delete indicates an expected call of Delete. -func (mr *MockSelfServiceProfileAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).Delete), varargs...) } // GetCustomText mocks base method. -func (m *MockSelfServiceProfileAPI) GetCustomText(ctx context.Context, id, language, page string, opts ...management.RequestOption) (map[string]interface{}, error) { +func (m *MockSelfServiceProfileAPI) GetCustomText(ctx context.Context, id, language, page string, opts ...management.RequestOption) (map[string]any, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, language, page} + varargs := []any{ctx, id, language, page} for _, a := range opts { varargs = append(varargs, a) } ret := m.ctrl.Call(m, "GetCustomText", varargs...) - ret0, _ := ret[0].(map[string]interface{}) + ret0, _ := ret[0].(map[string]any) ret1, _ := ret[1].(error) return ret0, ret1 } // GetCustomText indicates an expected call of GetCustomText. -func (mr *MockSelfServiceProfileAPIMockRecorder) GetCustomText(ctx, id, language, page interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) GetCustomText(ctx, id, language, page any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, language, page}, opts...) + varargs := append([]any{ctx, id, language, page}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomText", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).GetCustomText), varargs...) } // List mocks base method. func (m *MockSelfServiceProfileAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.SelfServiceProfileList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockSelfServiceProfileAPI) List(ctx context.Context, opts ...management } // List indicates an expected call of List. -func (mr *MockSelfServiceProfileAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockSelfServiceProfileAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.SelfServiceProfile, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockSelfServiceProfileAPI) Read(ctx context.Context, id string, opts .. } // Read indicates an expected call of Read. -func (mr *MockSelfServiceProfileAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockSelfServiceProfileAPI) Update(ctx context.Context, id string, p *management.SelfServiceProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, p} + varargs := []any{ctx, id, p} for _, a := range opts { varargs = append(varargs, a) } @@ -146,8 +147,8 @@ func (m *MockSelfServiceProfileAPI) Update(ctx context.Context, id string, p *ma } // Update indicates an expected call of Update. -func (mr *MockSelfServiceProfileAPIMockRecorder) Update(ctx, id, p interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSelfServiceProfileAPIMockRecorder) Update(ctx, id, p any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, p}, opts...) + varargs := append([]any{ctx, id, p}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockSelfServiceProfileAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/session_mock.go b/internal/auth0/mock/session_mock.go index 57a2cffbb..9f1f465a3 100644 --- a/internal/auth0/mock/session_mock.go +++ b/internal/auth0/mock/session_mock.go @@ -10,13 +10,14 @@ import ( management "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockSessionAPIV3 is a mock of SessionAPIV3 interface. type MockSessionAPIV3 struct { ctrl *gomock.Controller recorder *MockSessionAPIV3MockRecorder + isgomock struct{} } // MockSessionAPIV3MockRecorder is the mock recorder for MockSessionAPIV3. @@ -39,7 +40,7 @@ func (m *MockSessionAPIV3) EXPECT() *MockSessionAPIV3MockRecorder { // Delete mocks base method. func (m *MockSessionAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockSessionAPIV3) Delete(ctx context.Context, id string, opts ...option } // Delete indicates an expected call of Delete. -func (mr *MockSessionAPIV3MockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSessionAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockSessionAPIV3)(nil).Delete), varargs...) } // Get mocks base method. func (m *MockSessionAPIV3) Get(ctx context.Context, id string, opts ...option.RequestOption) (*management.GetSessionResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -69,16 +70,16 @@ func (m *MockSessionAPIV3) Get(ctx context.Context, id string, opts ...option.Re } // Get indicates an expected call of Get. -func (mr *MockSessionAPIV3MockRecorder) Get(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSessionAPIV3MockRecorder) Get(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockSessionAPIV3)(nil).Get), varargs...) } // Revoke mocks base method. func (m *MockSessionAPIV3) Revoke(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -88,16 +89,16 @@ func (m *MockSessionAPIV3) Revoke(ctx context.Context, id string, opts ...option } // Revoke indicates an expected call of Revoke. -func (mr *MockSessionAPIV3MockRecorder) Revoke(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSessionAPIV3MockRecorder) Revoke(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Revoke", reflect.TypeOf((*MockSessionAPIV3)(nil).Revoke), varargs...) } // Update mocks base method. func (m *MockSessionAPIV3) Update(ctx context.Context, id string, request *management.UpdateSessionRequestContent, opts ...option.RequestOption) (*management.UpdateSessionResponseContent, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, request} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } @@ -108,8 +109,8 @@ func (m *MockSessionAPIV3) Update(ctx context.Context, id string, request *manag } // Update indicates an expected call of Update. -func (mr *MockSessionAPIV3MockRecorder) Update(ctx, id, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockSessionAPIV3MockRecorder) Update(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, request}, opts...) + varargs := append([]any{ctx, id, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockSessionAPIV3)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/tenant_mock.go b/internal/auth0/mock/tenant_mock.go index ad9f93d04..f5cc66845 100644 --- a/internal/auth0/mock/tenant_mock.go +++ b/internal/auth0/mock/tenant_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockTenantAPI is a mock of TenantAPI interface. type MockTenantAPI struct { ctrl *gomock.Controller recorder *MockTenantAPIMockRecorder + isgomock struct{} } // MockTenantAPIMockRecorder is the mock recorder for MockTenantAPI. @@ -38,7 +39,7 @@ func (m *MockTenantAPI) EXPECT() *MockTenantAPIMockRecorder { // Read mocks base method. func (m *MockTenantAPI) Read(ctx context.Context, opts ...management.RequestOption) (*management.Tenant, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -49,16 +50,16 @@ func (m *MockTenantAPI) Read(ctx context.Context, opts ...management.RequestOpti } // Read indicates an expected call of Read. -func (mr *MockTenantAPIMockRecorder) Read(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTenantAPIMockRecorder) Read(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockTenantAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockTenantAPI) Update(ctx context.Context, t *management.Tenant, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, t} + varargs := []any{ctx, t} for _, a := range opts { varargs = append(varargs, a) } @@ -68,8 +69,8 @@ func (m *MockTenantAPI) Update(ctx context.Context, t *management.Tenant, opts . } // Update indicates an expected call of Update. -func (mr *MockTenantAPIMockRecorder) Update(ctx, t interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTenantAPIMockRecorder) Update(ctx, t any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, t}, opts...) + varargs := append([]any{ctx, t}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockTenantAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/token_exchange_mock.go b/internal/auth0/mock/token_exchange_mock.go index 1093cf6a0..fbb687566 100644 --- a/internal/auth0/mock/token_exchange_mock.go +++ b/internal/auth0/mock/token_exchange_mock.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockTokenExchangeAPI is a mock of TokenExchangeAPI interface. type MockTokenExchangeAPI struct { ctrl *gomock.Controller recorder *MockTokenExchangeAPIMockRecorder + isgomock struct{} } // MockTokenExchangeAPIMockRecorder is the mock recorder for MockTokenExchangeAPI. @@ -38,7 +39,7 @@ func (m *MockTokenExchangeAPI) EXPECT() *MockTokenExchangeAPIMockRecorder { // Create mocks base method. func (m *MockTokenExchangeAPI) Create(ctx context.Context, profile *management.TokenExchangeProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, profile} + varargs := []any{ctx, profile} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockTokenExchangeAPI) Create(ctx context.Context, profile *management.T } // Create indicates an expected call of Create. -func (mr *MockTokenExchangeAPIMockRecorder) Create(ctx, profile interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTokenExchangeAPIMockRecorder) Create(ctx, profile any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, profile}, opts...) + varargs := append([]any{ctx, profile}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockTokenExchangeAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockTokenExchangeAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockTokenExchangeAPI) Delete(ctx context.Context, id string, opts ...ma } // Delete indicates an expected call of Delete. -func (mr *MockTokenExchangeAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTokenExchangeAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockTokenExchangeAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockTokenExchangeAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.TokenExchangeProfileList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockTokenExchangeAPI) List(ctx context.Context, opts ...management.Requ } // List indicates an expected call of List. -func (mr *MockTokenExchangeAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTokenExchangeAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockTokenExchangeAPI)(nil).List), varargs...) } // Read mocks base method. func (m *MockTokenExchangeAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.TokenExchangeProfile, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockTokenExchangeAPI) Read(ctx context.Context, id string, opts ...mana } // Read indicates an expected call of Read. -func (mr *MockTokenExchangeAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTokenExchangeAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockTokenExchangeAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockTokenExchangeAPI) Update(ctx context.Context, id string, profile *management.TokenExchangeProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, profile} + varargs := []any{ctx, id, profile} for _, a := range opts { varargs = append(varargs, a) } @@ -126,8 +127,8 @@ func (m *MockTokenExchangeAPI) Update(ctx context.Context, id string, profile *m } // Update indicates an expected call of Update. -func (mr *MockTokenExchangeAPIMockRecorder) Update(ctx, id, profile interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockTokenExchangeAPIMockRecorder) Update(ctx, id, profile any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, profile}, opts...) + varargs := append([]any{ctx, id, profile}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockTokenExchangeAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/user_attribute_profiles.go b/internal/auth0/mock/user_attribute_profiles.go index e1539ea1a..7ca25c946 100644 --- a/internal/auth0/mock/user_attribute_profiles.go +++ b/internal/auth0/mock/user_attribute_profiles.go @@ -9,13 +9,14 @@ import ( reflect "reflect" management "github.com/auth0/go-auth0/management" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockUserAttributeProfilesAPI is a mock of UserAttributeProfilesAPI interface. type MockUserAttributeProfilesAPI struct { ctrl *gomock.Controller recorder *MockUserAttributeProfilesAPIMockRecorder + isgomock struct{} } // MockUserAttributeProfilesAPIMockRecorder is the mock recorder for MockUserAttributeProfilesAPI. @@ -38,7 +39,7 @@ func (m *MockUserAttributeProfilesAPI) EXPECT() *MockUserAttributeProfilesAPIMoc // Create mocks base method. func (m *MockUserAttributeProfilesAPI) Create(ctx context.Context, p *management.UserAttributeProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, p} + varargs := []any{ctx, p} for _, a := range opts { varargs = append(varargs, a) } @@ -48,16 +49,16 @@ func (m *MockUserAttributeProfilesAPI) Create(ctx context.Context, p *management } // Create indicates an expected call of Create. -func (mr *MockUserAttributeProfilesAPIMockRecorder) Create(ctx, p interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) Create(ctx, p any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, p}, opts...) + varargs := append([]any{ctx, p}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockUserAttributeProfilesAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -67,16 +68,16 @@ func (m *MockUserAttributeProfilesAPI) Delete(ctx context.Context, id string, op } // Delete indicates an expected call of Delete. -func (mr *MockUserAttributeProfilesAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).Delete), varargs...) } // GetTemplate mocks base method. func (m *MockUserAttributeProfilesAPI) GetTemplate(ctx context.Context, id string, opts ...management.RequestOption) (*management.UserAttributeProfileTemplateItem, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -87,16 +88,16 @@ func (m *MockUserAttributeProfilesAPI) GetTemplate(ctx context.Context, id strin } // GetTemplate indicates an expected call of GetTemplate. -func (mr *MockUserAttributeProfilesAPIMockRecorder) GetTemplate(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) GetTemplate(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTemplate", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).GetTemplate), varargs...) } // List mocks base method. func (m *MockUserAttributeProfilesAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.UserAttributeProfileList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -107,16 +108,16 @@ func (m *MockUserAttributeProfilesAPI) List(ctx context.Context, opts ...managem } // List indicates an expected call of List. -func (mr *MockUserAttributeProfilesAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).List), varargs...) } // ListTemplates mocks base method. func (m *MockUserAttributeProfilesAPI) ListTemplates(ctx context.Context, opts ...management.RequestOption) (*management.UserAttributeProfileTemplateList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -127,16 +128,16 @@ func (m *MockUserAttributeProfilesAPI) ListTemplates(ctx context.Context, opts . } // ListTemplates indicates an expected call of ListTemplates. -func (mr *MockUserAttributeProfilesAPIMockRecorder) ListTemplates(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) ListTemplates(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTemplates", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).ListTemplates), varargs...) } // Read mocks base method. func (m *MockUserAttributeProfilesAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.UserAttributeProfile, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -147,16 +148,16 @@ func (m *MockUserAttributeProfilesAPI) Read(ctx context.Context, id string, opts } // Read indicates an expected call of Read. -func (mr *MockUserAttributeProfilesAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).Read), varargs...) } // Update mocks base method. func (m *MockUserAttributeProfilesAPI) Update(ctx context.Context, id string, p *management.UserAttributeProfile, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, p} + varargs := []any{ctx, id, p} for _, a := range opts { varargs = append(varargs, a) } @@ -166,8 +167,8 @@ func (m *MockUserAttributeProfilesAPI) Update(ctx context.Context, id string, p } // Update indicates an expected call of Update. -func (mr *MockUserAttributeProfilesAPIMockRecorder) Update(ctx, id, p interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAttributeProfilesAPIMockRecorder) Update(ctx, id, p any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, p}, opts...) + varargs := append([]any{ctx, id, p}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockUserAttributeProfilesAPI)(nil).Update), varargs...) } diff --git a/internal/auth0/mock/user_mock.go b/internal/auth0/mock/user_mock.go index d29cd1828..cceb10d84 100644 --- a/internal/auth0/mock/user_mock.go +++ b/internal/auth0/mock/user_mock.go @@ -12,13 +12,14 @@ import ( management "github.com/auth0/go-auth0/management" management0 "github.com/auth0/go-auth0/v3/management" option "github.com/auth0/go-auth0/v3/management/option" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" ) // MockUserAPI is a mock of UserAPI interface. type MockUserAPI struct { ctrl *gomock.Controller recorder *MockUserAPIMockRecorder + isgomock struct{} } // MockUserAPIMockRecorder is the mock recorder for MockUserAPI. @@ -41,7 +42,7 @@ func (m *MockUserAPI) EXPECT() *MockUserAPIMockRecorder { // AssignRoles mocks base method. func (m *MockUserAPI) AssignRoles(ctx context.Context, id string, roles []*management.Role, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, roles} + varargs := []any{ctx, id, roles} for _, a := range opts { varargs = append(varargs, a) } @@ -51,16 +52,16 @@ func (m *MockUserAPI) AssignRoles(ctx context.Context, id string, roles []*manag } // AssignRoles indicates an expected call of AssignRoles. -func (mr *MockUserAPIMockRecorder) AssignRoles(ctx, id, roles interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) AssignRoles(ctx, id, roles any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, roles}, opts...) + varargs := append([]any{ctx, id, roles}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AssignRoles", reflect.TypeOf((*MockUserAPI)(nil).AssignRoles), varargs...) } // Blocks mocks base method. func (m *MockUserAPI) Blocks(ctx context.Context, id string, opts ...management.RequestOption) ([]*management.UserBlock, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -71,16 +72,16 @@ func (m *MockUserAPI) Blocks(ctx context.Context, id string, opts ...management. } // Blocks indicates an expected call of Blocks. -func (mr *MockUserAPIMockRecorder) Blocks(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Blocks(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Blocks", reflect.TypeOf((*MockUserAPI)(nil).Blocks), varargs...) } // BlocksByIdentifier mocks base method. func (m *MockUserAPI) BlocksByIdentifier(ctx context.Context, identifier string, opts ...management.RequestOption) ([]*management.UserBlock, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, identifier} + varargs := []any{ctx, identifier} for _, a := range opts { varargs = append(varargs, a) } @@ -91,16 +92,16 @@ func (m *MockUserAPI) BlocksByIdentifier(ctx context.Context, identifier string, } // BlocksByIdentifier indicates an expected call of BlocksByIdentifier. -func (mr *MockUserAPIMockRecorder) BlocksByIdentifier(ctx, identifier interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) BlocksByIdentifier(ctx, identifier any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, identifier}, opts...) + varargs := append([]any{ctx, identifier}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlocksByIdentifier", reflect.TypeOf((*MockUserAPI)(nil).BlocksByIdentifier), varargs...) } // Create mocks base method. func (m *MockUserAPI) Create(ctx context.Context, u *management.User, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, u} + varargs := []any{ctx, u} for _, a := range opts { varargs = append(varargs, a) } @@ -110,16 +111,16 @@ func (m *MockUserAPI) Create(ctx context.Context, u *management.User, opts ...ma } // Create indicates an expected call of Create. -func (mr *MockUserAPIMockRecorder) Create(ctx, u interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Create(ctx, u any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, u}, opts...) + varargs := append([]any{ctx, u}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockUserAPI)(nil).Create), varargs...) } // Delete mocks base method. func (m *MockUserAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -129,16 +130,16 @@ func (m *MockUserAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockUserAPIMockRecorder) Delete(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUserAPI)(nil).Delete), varargs...) } // List mocks base method. func (m *MockUserAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.UserList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -149,16 +150,16 @@ func (m *MockUserAPI) List(ctx context.Context, opts ...management.RequestOption } // List indicates an expected call of List. -func (mr *MockUserAPIMockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUserAPI)(nil).List), varargs...) } // ListByEmail mocks base method. func (m *MockUserAPI) ListByEmail(ctx context.Context, email string, opts ...management.RequestOption) ([]*management.User, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, email} + varargs := []any{ctx, email} for _, a := range opts { varargs = append(varargs, a) } @@ -169,16 +170,16 @@ func (m *MockUserAPI) ListByEmail(ctx context.Context, email string, opts ...man } // ListByEmail indicates an expected call of ListByEmail. -func (mr *MockUserAPIMockRecorder) ListByEmail(ctx, email interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) ListByEmail(ctx, email any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, email}, opts...) + varargs := append([]any{ctx, email}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListByEmail", reflect.TypeOf((*MockUserAPI)(nil).ListByEmail), varargs...) } // Read mocks base method. func (m *MockUserAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.User, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -189,16 +190,16 @@ func (m *MockUserAPI) Read(ctx context.Context, id string, opts ...management.Re } // Read indicates an expected call of Read. -func (mr *MockUserAPIMockRecorder) Read(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockUserAPI)(nil).Read), varargs...) } // RemoveRoles mocks base method. func (m *MockUserAPI) RemoveRoles(ctx context.Context, id string, roles []*management.Role, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, roles} + varargs := []any{ctx, id, roles} for _, a := range opts { varargs = append(varargs, a) } @@ -208,16 +209,16 @@ func (m *MockUserAPI) RemoveRoles(ctx context.Context, id string, roles []*manag } // RemoveRoles indicates an expected call of RemoveRoles. -func (mr *MockUserAPIMockRecorder) RemoveRoles(ctx, id, roles interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) RemoveRoles(ctx, id, roles any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, roles}, opts...) + varargs := append([]any{ctx, id, roles}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveRoles", reflect.TypeOf((*MockUserAPI)(nil).RemoveRoles), varargs...) } // Roles mocks base method. func (m *MockUserAPI) Roles(ctx context.Context, id string, opts ...management.RequestOption) (*management.RoleList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -228,16 +229,16 @@ func (m *MockUserAPI) Roles(ctx context.Context, id string, opts ...management.R } // Roles indicates an expected call of Roles. -func (mr *MockUserAPIMockRecorder) Roles(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Roles(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Roles", reflect.TypeOf((*MockUserAPI)(nil).Roles), varargs...) } // Search mocks base method. func (m *MockUserAPI) Search(ctx context.Context, opts ...management.RequestOption) (*management.UserList, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx} + varargs := []any{ctx} for _, a := range opts { varargs = append(varargs, a) } @@ -248,16 +249,16 @@ func (m *MockUserAPI) Search(ctx context.Context, opts ...management.RequestOpti } // Search indicates an expected call of Search. -func (mr *MockUserAPIMockRecorder) Search(ctx interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Search(ctx any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx}, opts...) + varargs := append([]any{ctx}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Search", reflect.TypeOf((*MockUserAPI)(nil).Search), varargs...) } // Unblock mocks base method. func (m *MockUserAPI) Unblock(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id} + varargs := []any{ctx, id} for _, a := range opts { varargs = append(varargs, a) } @@ -267,16 +268,16 @@ func (m *MockUserAPI) Unblock(ctx context.Context, id string, opts ...management } // Unblock indicates an expected call of Unblock. -func (mr *MockUserAPIMockRecorder) Unblock(ctx, id interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Unblock(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id}, opts...) + varargs := append([]any{ctx, id}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Unblock", reflect.TypeOf((*MockUserAPI)(nil).Unblock), varargs...) } // UnblockByIdentifier mocks base method. func (m *MockUserAPI) UnblockByIdentifier(ctx context.Context, identifier string, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, identifier} + varargs := []any{ctx, identifier} for _, a := range opts { varargs = append(varargs, a) } @@ -286,16 +287,16 @@ func (m *MockUserAPI) UnblockByIdentifier(ctx context.Context, identifier string } // UnblockByIdentifier indicates an expected call of UnblockByIdentifier. -func (mr *MockUserAPIMockRecorder) UnblockByIdentifier(ctx, identifier interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) UnblockByIdentifier(ctx, identifier any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, identifier}, opts...) + varargs := append([]any{ctx, identifier}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnblockByIdentifier", reflect.TypeOf((*MockUserAPI)(nil).UnblockByIdentifier), varargs...) } // Update mocks base method. func (m *MockUserAPI) Update(ctx context.Context, id string, u *management.User, opts ...management.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, id, u} + varargs := []any{ctx, id, u} for _, a := range opts { varargs = append(varargs, a) } @@ -305,9 +306,9 @@ func (m *MockUserAPI) Update(ctx context.Context, id string, u *management.User, } // Update indicates an expected call of Update. -func (mr *MockUserAPIMockRecorder) Update(ctx, id, u interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserAPIMockRecorder) Update(ctx, id, u any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, id, u}, opts...) + varargs := append([]any{ctx, id, u}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockUserAPI)(nil).Update), varargs...) } @@ -315,6 +316,7 @@ func (mr *MockUserAPIMockRecorder) Update(ctx, id, u interface{}, opts ...interf type MockUserSessionAPIV3 struct { ctrl *gomock.Controller recorder *MockUserSessionAPIV3MockRecorder + isgomock struct{} } // MockUserSessionAPIV3MockRecorder is the mock recorder for MockUserSessionAPIV3. @@ -337,7 +339,7 @@ func (m *MockUserSessionAPIV3) EXPECT() *MockUserSessionAPIV3MockRecorder { // Delete mocks base method. func (m *MockUserSessionAPIV3) Delete(ctx context.Context, userID string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, userID} + varargs := []any{ctx, userID} for _, a := range opts { varargs = append(varargs, a) } @@ -347,16 +349,16 @@ func (m *MockUserSessionAPIV3) Delete(ctx context.Context, userID string, opts . } // Delete indicates an expected call of Delete. -func (mr *MockUserSessionAPIV3MockRecorder) Delete(ctx, userID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserSessionAPIV3MockRecorder) Delete(ctx, userID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, userID}, opts...) + varargs := append([]any{ctx, userID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUserSessionAPIV3)(nil).Delete), varargs...) } // List mocks base method. func (m *MockUserSessionAPIV3) List(ctx context.Context, userID string, request *management0.ListUserSessionsRequestParameters, opts ...option.RequestOption) (*auth0.UserSessionPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, userID, request} + varargs := []any{ctx, userID, request} for _, a := range opts { varargs = append(varargs, a) } @@ -367,9 +369,9 @@ func (m *MockUserSessionAPIV3) List(ctx context.Context, userID string, request } // List indicates an expected call of List. -func (mr *MockUserSessionAPIV3MockRecorder) List(ctx, userID, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserSessionAPIV3MockRecorder) List(ctx, userID, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, userID, request}, opts...) + varargs := append([]any{ctx, userID, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUserSessionAPIV3)(nil).List), varargs...) } @@ -377,6 +379,7 @@ func (mr *MockUserSessionAPIV3MockRecorder) List(ctx, userID, request interface{ type MockUserRefreshTokenAPIV3 struct { ctrl *gomock.Controller recorder *MockUserRefreshTokenAPIV3MockRecorder + isgomock struct{} } // MockUserRefreshTokenAPIV3MockRecorder is the mock recorder for MockUserRefreshTokenAPIV3. @@ -399,7 +402,7 @@ func (m *MockUserRefreshTokenAPIV3) EXPECT() *MockUserRefreshTokenAPIV3MockRecor // Delete mocks base method. func (m *MockUserRefreshTokenAPIV3) Delete(ctx context.Context, userID string, opts ...option.RequestOption) error { m.ctrl.T.Helper() - varargs := []interface{}{ctx, userID} + varargs := []any{ctx, userID} for _, a := range opts { varargs = append(varargs, a) } @@ -409,16 +412,16 @@ func (m *MockUserRefreshTokenAPIV3) Delete(ctx context.Context, userID string, o } // Delete indicates an expected call of Delete. -func (mr *MockUserRefreshTokenAPIV3MockRecorder) Delete(ctx, userID interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserRefreshTokenAPIV3MockRecorder) Delete(ctx, userID any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, userID}, opts...) + varargs := append([]any{ctx, userID}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockUserRefreshTokenAPIV3)(nil).Delete), varargs...) } // List mocks base method. func (m *MockUserRefreshTokenAPIV3) List(ctx context.Context, userID string, request *management0.ListRefreshTokensRequestParameters, opts ...option.RequestOption) (*auth0.UserRefreshTokenPage, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, userID, request} + varargs := []any{ctx, userID, request} for _, a := range opts { varargs = append(varargs, a) } @@ -429,8 +432,8 @@ func (m *MockUserRefreshTokenAPIV3) List(ctx context.Context, userID string, req } // List indicates an expected call of List. -func (mr *MockUserRefreshTokenAPIV3MockRecorder) List(ctx, userID, request interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockUserRefreshTokenAPIV3MockRecorder) List(ctx, userID, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, userID, request}, opts...) + varargs := append([]any{ctx, userID, request}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockUserRefreshTokenAPIV3)(nil).List), varargs...) } diff --git a/internal/cli/actions_modules_test.go b/internal/cli/actions_modules_test.go index 54e696818..7f9f1a760 100644 --- a/internal/cli/actions_modules_test.go +++ b/internal/cli/actions_modules_test.go @@ -8,8 +8,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" "github.com/auth0/go-auth0/v3/management/option" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/actions_modules_versions_test.go b/internal/cli/actions_modules_versions_test.go index fc6873d38..43c990c13 100644 --- a/internal/cli/actions_modules_versions_test.go +++ b/internal/cli/actions_modules_versions_test.go @@ -8,8 +8,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" "github.com/auth0/go-auth0/v3/management/option" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/actions_test.go b/internal/cli/actions_test.go index 9a8074ade..dbe676388 100644 --- a/internal/cli/actions_test.go +++ b/internal/cli/actions_test.go @@ -9,8 +9,8 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/apis_test.go b/internal/cli/apis_test.go index f13b64ebc..5826bb6fe 100644 --- a/internal/cli/apis_test.go +++ b/internal/cli/apis_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/apps_test.go b/internal/cli/apps_test.go index 0dc732e90..3b186768c 100644 --- a/internal/cli/apps_test.go +++ b/internal/cli/apps_test.go @@ -6,8 +6,8 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/client_grants_organizations_test.go b/internal/cli/client_grants_organizations_test.go index c8a474608..67c5710ac 100644 --- a/internal/cli/client_grants_organizations_test.go +++ b/internal/cli/client_grants_organizations_test.go @@ -9,8 +9,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/client_grants_test.go b/internal/cli/client_grants_test.go index 5b2e047be..40436a002 100644 --- a/internal/cli/client_grants_test.go +++ b/internal/cli/client_grants_test.go @@ -9,8 +9,8 @@ import ( "github.com/auth0/go-auth0/management" managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/option" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/custom_domains_test.go b/internal/cli/custom_domains_test.go index dae22032f..de07aabc2 100644 --- a/internal/cli/custom_domains_test.go +++ b/internal/cli/custom_domains_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/event_streams_test.go b/internal/cli/event_streams_test.go index 57ed2b2a7..d5821ae6a 100644 --- a/internal/cli/event_streams_test.go +++ b/internal/cli/event_streams_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/log_streams_test.go b/internal/cli/log_streams_test.go index f74fbe578..9cc006963 100644 --- a/internal/cli/log_streams_test.go +++ b/internal/cli/log_streams_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/logs_test.go b/internal/cli/logs_test.go index 9f861a785..385530963 100644 --- a/internal/cli/logs_test.go +++ b/internal/cli/logs_test.go @@ -7,7 +7,7 @@ import ( "time" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/network_acl_test.go b/internal/cli/network_acl_test.go index b160a99e2..8c4e8ed47 100644 --- a/internal/cli/network_acl_test.go +++ b/internal/cli/network_acl_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/organizations_test.go b/internal/cli/organizations_test.go index 780c5eee6..42cd67fdb 100644 --- a/internal/cli/organizations_test.go +++ b/internal/cli/organizations_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/prompts_custom_text_test.go b/internal/cli/prompts_custom_text_test.go index f46960c99..a7514ea3e 100644 --- a/internal/cli/prompts_custom_text_test.go +++ b/internal/cli/prompts_custom_text_test.go @@ -8,8 +8,8 @@ import ( "io" "testing" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/quickstarts_test.go b/internal/cli/quickstarts_test.go index 36b4c97c1..f7bf685d0 100644 --- a/internal/cli/quickstarts_test.go +++ b/internal/cli/quickstarts_test.go @@ -10,10 +10,10 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/spf13/cobra" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/refresh_tokens_test.go b/internal/cli/refresh_tokens_test.go index 167dffc97..40dd60b7c 100644 --- a/internal/cli/refresh_tokens_test.go +++ b/internal/cli/refresh_tokens_test.go @@ -7,8 +7,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/option" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/roles_test.go b/internal/cli/roles_test.go index 214c476e1..bcee4e15c 100644 --- a/internal/cli/roles_test.go +++ b/internal/cli/roles_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/rules_test.go b/internal/cli/rules_test.go index f7a44bbed..893ccea00 100644 --- a/internal/cli/rules_test.go +++ b/internal/cli/rules_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/sessions_test.go b/internal/cli/sessions_test.go index c64c450e8..0057aa97c 100644 --- a/internal/cli/sessions_test.go +++ b/internal/cli/sessions_test.go @@ -8,8 +8,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/option" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/terraform_fetcher_test.go b/internal/cli/terraform_fetcher_test.go index a981935e9..686116640 100644 --- a/internal/cli/terraform_fetcher_test.go +++ b/internal/cli/terraform_fetcher_test.go @@ -10,8 +10,8 @@ import ( "github.com/auth0/go-auth0/management" managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/test_test.go b/internal/cli/test_test.go index 1df6c8f76..c1da360d3 100644 --- a/internal/cli/test_test.go +++ b/internal/cli/test_test.go @@ -6,8 +6,8 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/universal_login_customize_test.go b/internal/cli/universal_login_customize_test.go index a6c0e4903..f84cfc65e 100644 --- a/internal/cli/universal_login_customize_test.go +++ b/internal/cli/universal_login_customize_test.go @@ -8,8 +8,8 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/universal_login_templates_test.go b/internal/cli/universal_login_templates_test.go index a98dbb1ca..d00a79f1d 100644 --- a/internal/cli/universal_login_templates_test.go +++ b/internal/cli/universal_login_templates_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/users_refresh_tokens_test.go b/internal/cli/users_refresh_tokens_test.go index d1b114d21..8b804cb81 100644 --- a/internal/cli/users_refresh_tokens_test.go +++ b/internal/cli/users_refresh_tokens_test.go @@ -7,8 +7,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/users_roles_test.go b/internal/cli/users_roles_test.go index 2bae3b9ff..eb97f862c 100644 --- a/internal/cli/users_roles_test.go +++ b/internal/cli/users_roles_test.go @@ -6,8 +6,8 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/users_sessions_test.go b/internal/cli/users_sessions_test.go index 649e38d15..07569b0fe 100644 --- a/internal/cli/users_sessions_test.go +++ b/internal/cli/users_sessions_test.go @@ -7,8 +7,8 @@ import ( managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/internal/cli/users_test.go b/internal/cli/users_test.go index c1fe74dea..9a64e638f 100644 --- a/internal/cli/users_test.go +++ b/internal/cli/users_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "github.com/golang/mock/gomock" + "go.uber.org/mock/gomock" "github.com/stretchr/testify/assert" diff --git a/internal/cli/utils_shared_test.go b/internal/cli/utils_shared_test.go index 49bcf684a..46480c679 100644 --- a/internal/cli/utils_shared_test.go +++ b/internal/cli/utils_shared_test.go @@ -8,8 +8,8 @@ import ( "github.com/auth0/go-auth0/management" managementv3 "github.com/auth0/go-auth0/v3/management" "github.com/auth0/go-auth0/v3/management/core" - "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" diff --git a/references/testing.md b/references/testing.md index 0fd7f1075..1bd41236e 100644 --- a/references/testing.md +++ b/references/testing.md @@ -2,7 +2,7 @@ ## Frameworks & layout -- **Unit tests:** Go's standard `testing`, with `github.com/stretchr/testify` (`assert`) for assertions and `github.com/golang/mock/gomock` for mocks. +- **Unit tests:** Go's standard `testing`, with `github.com/stretchr/testify` (`assert`) for assertions and `go.uber.org/mock/gomock` for mocks. - **Location:** colocated `*_test.go` files next to the code (e.g. `internal/cli/apps_test.go`), same package. - **Integration tests:** YAML-driven test cases under `test/integration/*-test-cases.yaml`, executed by `commander` against a live Auth0 tenant. - **Coverage:** produced by `make test-unit` (`coverage-unit-tests.out`) and uploaded to Codecov in CI. `codecov.yml` holds the config; there is no hard local threshold gate. diff --git a/tools/tools.go b/tools/tools.go deleted file mode 100644 index 9295fa79b..000000000 --- a/tools/tools.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build tools -// +build tools - -package tools - -import ( - // Generator for mocks. - _ "github.com/golang/mock/mockgen" -) From 5c290a3e61d29d73882d1c384f7f7b6f4d63a3cb Mon Sep 17 00:00:00 2001 From: ramya18101 Date: Mon, 7 Sep 2026 16:03:41 +0530 Subject: [PATCH 2/5] chore: keep the default mockgen command header in generated mocks --- Makefile | 1 - internal/auth/mock/auth.go | 5 +++++ internal/auth0/mock/action_mock.go | 5 +++++ internal/auth0/mock/action_module_mock.go | 5 +++++ internal/auth0/mock/branding_mock.go | 5 +++++ internal/auth0/mock/branding_prompt_mock.go | 5 +++++ internal/auth0/mock/branding_theme_mock.go | 5 +++++ internal/auth0/mock/client_grant_mock.go | 5 +++++ internal/auth0/mock/client_mock.go | 5 +++++ internal/auth0/mock/connection_mock.go | 5 +++++ internal/auth0/mock/custom_domain_mock.go | 5 +++++ internal/auth0/mock/email_provider_mock.go | 5 +++++ internal/auth0/mock/email_template_mock.go | 5 +++++ internal/auth0/mock/event_streams_mock.go | 5 +++++ internal/auth0/mock/flow_mock.go | 5 +++++ internal/auth0/mock/form_mock.go | 5 +++++ internal/auth0/mock/log_mock.go | 5 +++++ internal/auth0/mock/log_stream_mock.go | 5 +++++ internal/auth0/mock/network_acl_mock.go | 5 +++++ internal/auth0/mock/organization_mock.go | 5 +++++ internal/auth0/mock/phone_notification_template_mock.go | 5 +++++ internal/auth0/mock/refresh_token_mock.go | 5 +++++ internal/auth0/mock/resource_server_mock.go | 5 +++++ internal/auth0/mock/roles_mock.go | 5 +++++ internal/auth0/mock/rule_mock.go | 5 +++++ internal/auth0/mock/self_service_profiles.go | 5 +++++ internal/auth0/mock/session_mock.go | 5 +++++ internal/auth0/mock/tenant_mock.go | 5 +++++ internal/auth0/mock/token_exchange_mock.go | 5 +++++ internal/auth0/mock/user_attribute_profiles.go | 5 +++++ internal/auth0/mock/user_mock.go | 5 +++++ 31 files changed, 150 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 08f40bdf0..63099efe2 100644 --- a/Makefile +++ b/Makefile @@ -176,7 +176,6 @@ test-integration: install-with-cover $(GO_BIN)/auth0 $(GO_BIN)/commander ## Run test-mocks: $(GO_BIN)/mockgen ## Generate testing mocks using mockgen ${call print, "Generating test mocks"} @go generate -v ./... - @find internal -path '*/mock/*.go' -type f -exec perl -0pi -e 's{//\n// Generated by this command:\n//\n//[^\n]*\n//\n}{}' {} + test-clean: ## Clean up test tenant ${call print, "Cleaning up the test tenant"} diff --git a/internal/auth/mock/auth.go b/internal/auth/mock/auth.go index 3dcb852cf..a28d3bc6a 100644 --- a/internal/auth/mock/auth.go +++ b/internal/auth/mock/auth.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: auth.go +// +// Generated by this command: +// +// mockgen -source auth.go -destination mock/auth.go -package mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/action_mock.go b/internal/auth0/mock/action_mock.go index dc62f9d19..00445f60c 100644 --- a/internal/auth0/mock/action_mock.go +++ b/internal/auth0/mock/action_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: action.go +// +// Generated by this command: +// +// mockgen -source=action.go -destination=mock/action_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/action_module_mock.go b/internal/auth0/mock/action_module_mock.go index 60f7eb560..0fe080e7e 100644 --- a/internal/auth0/mock/action_module_mock.go +++ b/internal/auth0/mock/action_module_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: action_module.go +// +// Generated by this command: +// +// mockgen -source=action_module.go -destination=mock/action_module_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/branding_mock.go b/internal/auth0/mock/branding_mock.go index c397eecbb..ea5ccfbb2 100644 --- a/internal/auth0/mock/branding_mock.go +++ b/internal/auth0/mock/branding_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: branding.go +// +// Generated by this command: +// +// mockgen -source=branding.go -destination=mock/branding_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/branding_prompt_mock.go b/internal/auth0/mock/branding_prompt_mock.go index 851a43eea..09a2a18be 100644 --- a/internal/auth0/mock/branding_prompt_mock.go +++ b/internal/auth0/mock/branding_prompt_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: branding_prompt.go +// +// Generated by this command: +// +// mockgen -source=branding_prompt.go -destination=mock/branding_prompt_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/branding_theme_mock.go b/internal/auth0/mock/branding_theme_mock.go index 369695699..7aa57a548 100644 --- a/internal/auth0/mock/branding_theme_mock.go +++ b/internal/auth0/mock/branding_theme_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: branding_theme.go +// +// Generated by this command: +// +// mockgen -source=branding_theme.go -destination=mock/branding_theme_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/client_grant_mock.go b/internal/auth0/mock/client_grant_mock.go index c947a1525..b4c56fb32 100644 --- a/internal/auth0/mock/client_grant_mock.go +++ b/internal/auth0/mock/client_grant_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: client_grant.go +// +// Generated by this command: +// +// mockgen -source=client_grant.go -destination=mock/client_grant_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/client_mock.go b/internal/auth0/mock/client_mock.go index bd2156d60..f92716064 100644 --- a/internal/auth0/mock/client_mock.go +++ b/internal/auth0/mock/client_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: client.go +// +// Generated by this command: +// +// mockgen -source=client.go -destination=mock/client_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/connection_mock.go b/internal/auth0/mock/connection_mock.go index 6a06b4250..662b9ed4d 100644 --- a/internal/auth0/mock/connection_mock.go +++ b/internal/auth0/mock/connection_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: connection.go +// +// Generated by this command: +// +// mockgen -source=connection.go -destination=mock/connection_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/custom_domain_mock.go b/internal/auth0/mock/custom_domain_mock.go index 1c8ea7906..eb1f6d5e1 100644 --- a/internal/auth0/mock/custom_domain_mock.go +++ b/internal/auth0/mock/custom_domain_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: custom_domain.go +// +// Generated by this command: +// +// mockgen -source=custom_domain.go -destination=mock/custom_domain_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/email_provider_mock.go b/internal/auth0/mock/email_provider_mock.go index 410a1672d..f023f9dfa 100644 --- a/internal/auth0/mock/email_provider_mock.go +++ b/internal/auth0/mock/email_provider_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: email_provider.go +// +// Generated by this command: +// +// mockgen -source=email_provider.go -destination=mock/email_provider_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/email_template_mock.go b/internal/auth0/mock/email_template_mock.go index c96b6e366..5a6d504e7 100644 --- a/internal/auth0/mock/email_template_mock.go +++ b/internal/auth0/mock/email_template_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: email_template.go +// +// Generated by this command: +// +// mockgen -source=email_template.go -destination=mock/email_template_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/event_streams_mock.go b/internal/auth0/mock/event_streams_mock.go index 1f42f603a..d55cd8132 100644 --- a/internal/auth0/mock/event_streams_mock.go +++ b/internal/auth0/mock/event_streams_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: event_streams.go +// +// Generated by this command: +// +// mockgen -source=event_streams.go -destination=mock/event_streams_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/flow_mock.go b/internal/auth0/mock/flow_mock.go index 91097bacb..4e6757117 100644 --- a/internal/auth0/mock/flow_mock.go +++ b/internal/auth0/mock/flow_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: flow.go +// +// Generated by this command: +// +// mockgen -source=flow.go -destination=mock/flow_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/form_mock.go b/internal/auth0/mock/form_mock.go index 7d33d9d3c..57ea28712 100644 --- a/internal/auth0/mock/form_mock.go +++ b/internal/auth0/mock/form_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: form.go +// +// Generated by this command: +// +// mockgen -source=form.go -destination=mock/form_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/log_mock.go b/internal/auth0/mock/log_mock.go index b18f91b19..9b1fb298b 100644 --- a/internal/auth0/mock/log_mock.go +++ b/internal/auth0/mock/log_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: log.go +// +// Generated by this command: +// +// mockgen -source=log.go -destination=mock/log_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/log_stream_mock.go b/internal/auth0/mock/log_stream_mock.go index ed860bed3..932730075 100644 --- a/internal/auth0/mock/log_stream_mock.go +++ b/internal/auth0/mock/log_stream_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: log_stream.go +// +// Generated by this command: +// +// mockgen -source=log_stream.go -destination=mock/log_stream_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/network_acl_mock.go b/internal/auth0/mock/network_acl_mock.go index 9a43c8c54..d18bfcab5 100644 --- a/internal/auth0/mock/network_acl_mock.go +++ b/internal/auth0/mock/network_acl_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: network_acl.go +// +// Generated by this command: +// +// mockgen -source=network_acl.go -destination=mock/network_acl_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/organization_mock.go b/internal/auth0/mock/organization_mock.go index 87474e6cb..54cb78345 100644 --- a/internal/auth0/mock/organization_mock.go +++ b/internal/auth0/mock/organization_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: organization.go +// +// Generated by this command: +// +// mockgen -source=organization.go -destination=mock/organization_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/phone_notification_template_mock.go b/internal/auth0/mock/phone_notification_template_mock.go index 634923e10..facd432a9 100644 --- a/internal/auth0/mock/phone_notification_template_mock.go +++ b/internal/auth0/mock/phone_notification_template_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: phone_notification_template.go +// +// Generated by this command: +// +// mockgen -source=phone_notification_template.go -destination=mock/phone_notification_template_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/refresh_token_mock.go b/internal/auth0/mock/refresh_token_mock.go index 69c19d629..03cb24c77 100644 --- a/internal/auth0/mock/refresh_token_mock.go +++ b/internal/auth0/mock/refresh_token_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: refresh_token.go +// +// Generated by this command: +// +// mockgen -source=refresh_token.go -destination=mock/refresh_token_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/resource_server_mock.go b/internal/auth0/mock/resource_server_mock.go index bccda63f4..2b7d87c61 100644 --- a/internal/auth0/mock/resource_server_mock.go +++ b/internal/auth0/mock/resource_server_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: resource_server.go +// +// Generated by this command: +// +// mockgen -source=resource_server.go -destination=mock/resource_server_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/roles_mock.go b/internal/auth0/mock/roles_mock.go index 98544eac3..6bc5481a1 100644 --- a/internal/auth0/mock/roles_mock.go +++ b/internal/auth0/mock/roles_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: role.go +// +// Generated by this command: +// +// mockgen -source=role.go -destination=mock/roles_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/rule_mock.go b/internal/auth0/mock/rule_mock.go index 82bfd98ef..dad7b6901 100644 --- a/internal/auth0/mock/rule_mock.go +++ b/internal/auth0/mock/rule_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: rule.go +// +// Generated by this command: +// +// mockgen -source=rule.go -destination=mock/rule_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/self_service_profiles.go b/internal/auth0/mock/self_service_profiles.go index 2ca3b81d1..c82eec431 100644 --- a/internal/auth0/mock/self_service_profiles.go +++ b/internal/auth0/mock/self_service_profiles.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: self_service_profiles.go +// +// Generated by this command: +// +// mockgen -source=self_service_profiles.go -destination=mock/self_service_profiles.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/session_mock.go b/internal/auth0/mock/session_mock.go index 9f1f465a3..9a2be1533 100644 --- a/internal/auth0/mock/session_mock.go +++ b/internal/auth0/mock/session_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: session.go +// +// Generated by this command: +// +// mockgen -source=session.go -destination=mock/session_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/tenant_mock.go b/internal/auth0/mock/tenant_mock.go index f5cc66845..9ba018cf1 100644 --- a/internal/auth0/mock/tenant_mock.go +++ b/internal/auth0/mock/tenant_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: tenant.go +// +// Generated by this command: +// +// mockgen -source=tenant.go -destination=mock/tenant_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/token_exchange_mock.go b/internal/auth0/mock/token_exchange_mock.go index fbb687566..001256ba3 100644 --- a/internal/auth0/mock/token_exchange_mock.go +++ b/internal/auth0/mock/token_exchange_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: token_exchange.go +// +// Generated by this command: +// +// mockgen -source=token_exchange.go -destination=mock/token_exchange_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/user_attribute_profiles.go b/internal/auth0/mock/user_attribute_profiles.go index 7ca25c946..1121c1e77 100644 --- a/internal/auth0/mock/user_attribute_profiles.go +++ b/internal/auth0/mock/user_attribute_profiles.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: user_attribute_profiles.go +// +// Generated by this command: +// +// mockgen -source=user_attribute_profiles.go -destination=mock/user_attribute_profiles.go -package=mock +// // Package mock is a generated GoMock package. package mock diff --git a/internal/auth0/mock/user_mock.go b/internal/auth0/mock/user_mock.go index cceb10d84..e12df79c4 100644 --- a/internal/auth0/mock/user_mock.go +++ b/internal/auth0/mock/user_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: user.go +// +// Generated by this command: +// +// mockgen -source=user.go -destination=mock/user_mock.go -package=mock +// // Package mock is a generated GoMock package. package mock From 0f602c262bd51d803f792290230e48ef4f41c4a9 Mon Sep 17 00:00:00 2001 From: ramya18101 Date: Wed, 9 Sep 2026 17:44:20 +0530 Subject: [PATCH 3/5] Update branch to the latest forms support changes --- README.md | 1 + docs/auth0_forms.md | 20 + docs/auth0_forms_create.md | 70 ++ docs/auth0_forms_delete.md | 59 ++ docs/auth0_forms_export.md | 55 + docs/auth0_forms_import.md | 60 ++ docs/auth0_forms_list.md | 58 ++ docs/auth0_forms_open.md | 47 + docs/auth0_forms_show.md | 55 + docs/auth0_forms_update.md | 65 ++ docs/index.md | 1 + go.mod | 10 +- go.sum | 16 +- internal/auth/auth.go | 3 +- internal/auth0/auth0.go | 4 +- internal/auth0/form.go | 53 +- internal/auth0/mock/form_mock.go | 106 +- internal/cli/data_json.go | 2 +- internal/cli/forms.go | 1094 ++++++++++++++++++++ internal/cli/forms_envelope.go | 403 +++++++ internal/cli/forms_envelope_test.go | 235 +++++ internal/cli/forms_test.go | 482 +++++++++ internal/cli/root.go | 1 + internal/cli/terraform.go | 2 +- internal/cli/terraform_fetcher.go | 26 +- internal/cli/terraform_fetcher_test.go | 42 +- internal/display/forms.go | 198 ++++ internal/display/forms_test.go | 50 + test/integration/fixtures/update-form.json | 10 + test/integration/forms-test-cases.yaml | 130 +++ test/integration/scripts/cleanup-forms.sh | 16 + test/integration/scripts/get-form-id.sh | 13 + test/integration/scripts/test-cleanup.sh | 1 + 33 files changed, 3253 insertions(+), 135 deletions(-) create mode 100644 docs/auth0_forms.md create mode 100644 docs/auth0_forms_create.md create mode 100644 docs/auth0_forms_delete.md create mode 100644 docs/auth0_forms_export.md create mode 100644 docs/auth0_forms_import.md create mode 100644 docs/auth0_forms_list.md create mode 100644 docs/auth0_forms_open.md create mode 100644 docs/auth0_forms_show.md create mode 100644 docs/auth0_forms_update.md create mode 100644 internal/cli/forms.go create mode 100644 internal/cli/forms_envelope.go create mode 100644 internal/cli/forms_envelope_test.go create mode 100644 internal/cli/forms_test.go create mode 100644 internal/display/forms.go create mode 100644 internal/display/forms_test.go create mode 100644 test/integration/fixtures/update-form.json create mode 100644 test/integration/forms-test-cases.yaml create mode 100755 test/integration/scripts/cleanup-forms.sh create mode 100755 test/integration/scripts/get-form-id.sh diff --git a/README.md b/README.md index 823d5b8c3..4e82fc315 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,7 @@ Select **y** to proceed with your default tenant, or **N** to choose a different - [auth0 domains](https://auth0.github.io/auth0-cli/auth0_domains.html) - Manage custom domains - [auth0 email](https://auth0.github.io/auth0-cli/auth0_email.html) - Manage email settings - [auth0 flows](https://auth0.github.io/auth0-cli/auth0_flows.html) - Manage Flows +- [auth0 forms](https://auth0.github.io/auth0-cli/auth0_forms.html) - Manage Forms - [auth0 login](https://auth0.github.io/auth0-cli/auth0_login.html) - Authenticate the Auth0 CLI - [auth0 logout](https://auth0.github.io/auth0-cli/auth0_logout.html) - Log out of a tenant's session - [auth0 logs](https://auth0.github.io/auth0-cli/auth0_logs.html) - View tenant logs diff --git a/docs/auth0_forms.md b/docs/auth0_forms.md new file mode 100644 index 000000000..c40b08c34 --- /dev/null +++ b/docs/auth0_forms.md @@ -0,0 +1,20 @@ +--- +layout: default +has_toc: false +has_children: true +--- +# auth0 forms + +Forms are customizable screens you can insert into a flow to collect input from users during authentication and other journeys. + +## Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + diff --git a/docs/auth0_forms_create.md b/docs/auth0_forms_create.md new file mode 100644 index 000000000..62b8d27d1 --- /dev/null +++ b/docs/auth0_forms_create.md @@ -0,0 +1,70 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms create + +Create a new form. + +Interactive behavior: `auth0 forms create` asks for the name, then offers to author the form body in an editor. Decline the prompt to create a minimal scaffold and refine it in the dashboard builder instead. + +Alternatively, supply the whole body via `--data` as inline JSON, a file (`@form.json`), or piped stdin. Run `auth0 forms create --schema` to print the accepted payload schema and `auth0 forms create --example > form.json` to generate a starter body. + +`--data` provides the whole payload and cannot be combined with `--name` or the `--language-*` flags; it is checked for valid JSON and a form name before it is sent, and the form graph itself is validated by the API. + +## Usage +``` +auth0 forms create [flags] +``` + +## Examples + +``` + auth0 forms create + auth0 forms create --name "My Form" + auth0 forms create --example > form.json + auth0 forms create --schema + auth0 forms create --data '{"name":"My Form"}' + auth0 forms create --data @form.json + cat form.json | auth0 forms create +``` + + +## Flags + +``` + --data string JSON payload for the operation, as a JSON string or file path (@file.json). Can also be piped via stdin. + --example Print an example form JSON body and exit. + --json Output in json format. + --json-compact Output in compact json format. + --language-default string Default language of the Form (e.g. en). + --language-primary string Primary language of the Form (e.g. en). + --name string Name of the Form. + --schema Print the request payload schema for this command and exit. Use with --json or --json-compact for machine-readable output. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_delete.md b/docs/auth0_forms_delete.md new file mode 100644 index 000000000..a8f923bae --- /dev/null +++ b/docs/auth0_forms_delete.md @@ -0,0 +1,59 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms delete + +Delete a form. + +To delete interactively, use `auth0 forms delete` with no arguments. + +To delete non-interactively, supply the form id and the `--force` flag to skip confirmation. + +## Usage +``` +auth0 forms delete [flags] +``` + +## Examples + +``` + auth0 forms delete + auth0 forms rm + auth0 forms delete + auth0 forms delete --force + auth0 forms delete +``` + + +## Flags + +``` + --force Skip confirmation. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_export.md b/docs/auth0_forms_export.md new file mode 100644 index 000000000..d7ccfc1b4 --- /dev/null +++ b/docs/auth0_forms_export.md @@ -0,0 +1,55 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms export + +Export a form as JSON. Writes to stdout by default (pipe-friendly) or to a file with `--output`. The output uses the same envelope as the Auth0 Dashboard (`version`, `form`, `flows`, `connections`), bundling the flows and vault connections the form references with portable `#FLOW-N#`/`#CONN-N#` placeholders, so it can be imported by the CLI or opened in the Dashboard. + +## Usage +``` +auth0 forms export [flags] +``` + +## Examples + +``` + auth0 forms export + auth0 forms export --output ./form.json + auth0 forms export --json-compact + auth0 forms export | auth0 forms import +``` + + +## Flags + +``` + --json-compact Output in compact json format. + -o, --output string Path to write the exported form. Writes to stdout when omitted. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_import.md b/docs/auth0_forms_import.md new file mode 100644 index 000000000..9ca815c8d --- /dev/null +++ b/docs/auth0_forms_import.md @@ -0,0 +1,60 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms import + +Import a form from `--data`, given as inline JSON, a file (`@form.json`), or piped stdin. Without `--id` a new form is created; with `--id` the existing form is replaced. + +Both a flat form graph and the Dashboard envelope (`version`, `form`, `flows`, `connections`) are accepted. For an envelope, the bundled flows are created and each `#CONN-N#` connection placeholder is mapped to an existing vault connection, either interactively or with `--connection`. + +## Usage +``` +auth0 forms import [flags] +``` + +## Examples + +``` + auth0 forms import --data @form.json + auth0 forms import --data @form.json --id + auth0 forms import --data @form.json --connection '#CONN-1#=ac_123' + auth0 forms export | auth0 forms import +``` + + +## Flags + +``` + --connection stringToString Map an exported connection placeholder to an existing vault connection ID, e.g. --connection '#CONN-1#=ac_123'. Repeatable. (default []) + --data string JSON payload for the operation, as a JSON string or file path (@file.json). Can also be piped via stdin. + --id string Id of an existing Form to replace. When omitted, a new form is created. + --json Output in json format. + --json-compact Output in compact json format. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_list.md b/docs/auth0_forms_list.md new file mode 100644 index 000000000..ca5602716 --- /dev/null +++ b/docs/auth0_forms_list.md @@ -0,0 +1,58 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms list + +List your existing forms. To create one, run: `auth0 forms create`. + +## Usage +``` +auth0 forms list [flags] +``` + +## Examples + +``` + auth0 forms list + auth0 forms ls + auth0 forms ls --number 100 + auth0 forms ls --json + auth0 forms ls --csv +``` + + +## Flags + +``` + --csv Output in csv format. + --json Output in json format. + --json-compact Output in compact json format. + -n, --number int Number of forms to retrieve. Fetched across pages. (default 100) +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_open.md b/docs/auth0_forms_open.md new file mode 100644 index 000000000..a312960f1 --- /dev/null +++ b/docs/auth0_forms_open.md @@ -0,0 +1,47 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms open + +Open a form's page in the Auth0 Dashboard form builder. + +## Usage +``` +auth0 forms open [flags] +``` + +## Examples + +``` + auth0 forms open + auth0 forms open +``` + + + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_show.md b/docs/auth0_forms_show.md new file mode 100644 index 000000000..aeee9aa4e --- /dev/null +++ b/docs/auth0_forms_show.md @@ -0,0 +1,55 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms show + +Display information about a form. + +## Usage +``` +auth0 forms show [flags] +``` + +## Examples + +``` + auth0 forms show + auth0 forms show + auth0 forms show --json + auth0 forms show --json-compact +``` + + +## Flags + +``` + --json Output in json format. + --json-compact Output in compact json format. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/auth0_forms_update.md b/docs/auth0_forms_update.md new file mode 100644 index 000000000..359a14abb --- /dev/null +++ b/docs/auth0_forms_update.md @@ -0,0 +1,65 @@ +--- +layout: default +parent: auth0 forms +has_toc: false +--- +# auth0 forms update + +Update a form. + +Passing `--data` as inline JSON, a file (`@form.json`), or piped stdin replaces every top-level field present in the payload. The payload is checked for valid JSON before it is sent, and the form graph itself is validated by the API. Passing only scalar flags such as `--name` performs a merge that preserves the form's graph fields (nodes, style, translations). Server-managed fields such as `id`, `created_at`, and `updated_at` are removed before the update request is sent. + +`--data` provides the whole payload and cannot be combined with `--name` or the `--language-*` flags. Run `auth0 forms update --schema` to print the accepted payload schema. + +## Usage +``` +auth0 forms update [flags] +``` + +## Examples + +``` + auth0 forms update --name "New Name" + auth0 forms update --schema + auth0 forms update --data '{"name":"New Name"}' + auth0 forms update --data @form.json + cat form.json | auth0 forms update +``` + + +## Flags + +``` + --data string JSON payload for the operation, as a JSON string or file path (@file.json). Can also be piped via stdin. + --json Output in json format. + --json-compact Output in compact json format. + --language-default string Default language of the Form (e.g. en). + --language-primary string Primary language of the Form (e.g. en). + --name string Name of the Form. + --schema Print the request payload schema for this command and exit. Use with --json or --json-compact for machine-readable output. +``` + + +## Inherited Flags + +``` + --agent-mode Output JSON, disable prompts and colors. Auto-enabled for AI agents; set AUTH0_AGENT_MODE=false to disable. + --debug Enable debug mode. + --no-color Disable colors. + --no-input Disable interactivity. + --tenant string Specific tenant to use. +``` + + +## Related Commands + +- [auth0 forms create](auth0_forms_create.md) - Create a new form +- [auth0 forms delete](auth0_forms_delete.md) - Delete a form +- [auth0 forms export](auth0_forms_export.md) - Export a form +- [auth0 forms import](auth0_forms_import.md) - Import a form +- [auth0 forms list](auth0_forms_list.md) - List your forms +- [auth0 forms open](auth0_forms_open.md) - Open a form in the Auth0 Dashboard +- [auth0 forms show](auth0_forms_show.md) - Show a form +- [auth0 forms update](auth0_forms_update.md) - Update a form + + diff --git a/docs/index.md b/docs/index.md index c08e6ed14..018e54344 100644 --- a/docs/index.md +++ b/docs/index.md @@ -98,6 +98,7 @@ The help for any command can also be emitted as JSON by combining `--help` with - [auth0 email](auth0_email.md) - Manage email settings and configure email providers - [auth0 event-streams](auth0_event-streams.md) - Manage Event Stream - [auth0 flows](auth0_flows.md) - Manage Flows +- [auth0 forms](auth0_forms.md) - Manage Forms - [auth0 login](auth0_login.md) - Authenticate the Auth0 CLI - [auth0 logout](auth0_logout.md) - Log out of a tenant's session - [auth0 logs](auth0_logs.md) - View tenant logs diff --git a/go.mod b/go.mod index e1cf1d059..6c496c317 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/auth0/auth0-cli -go 1.25.8 +go 1.26.0 require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/PuerkitoBio/rehttp v1.4.0 github.com/atotto/clipboard v0.1.4 github.com/auth0/go-auth0 v1.48.0 - github.com/auth0/go-auth0/v3 v3.3.0 + github.com/auth0/go-auth0/v3 v3.4.0 github.com/briandowns/spinner v1.23.2 github.com/charmbracelet/glamour v1.0.0 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e @@ -38,9 +38,9 @@ require ( github.com/tidwall/pretty v1.2.1 github.com/zalando/go-keyring v0.2.8 go.uber.org/mock v0.6.0 - golang.org/x/oauth2 v0.36.0 - golang.org/x/sync v0.22.0 - golang.org/x/sys v0.47.0 + golang.org/x/oauth2 v0.37.0 + golang.org/x/sync v0.23.0 + golang.org/x/sys v0.48.0 golang.org/x/term v0.45.0 golang.org/x/text v0.41.0 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index 747728760..241201112 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/auth0/go-auth0 v1.48.0 h1:INqEEZbDEkXVI0xUZluS1zzoB4YbYzvCysHH2CNEGzc= github.com/auth0/go-auth0 v1.48.0/go.mod h1:32sQB1uAn+99fJo6N819EniKq8h785p0ag0lMWhiTaE= -github.com/auth0/go-auth0/v3 v3.3.0 h1:p/OxyycZNUtFekO6uXGBqrVXtnJ92gO7ikXtVDuT0ZA= -github.com/auth0/go-auth0/v3 v3.3.0/go.mod h1:wb20iE6T4wCGWtMXAZTWTTxx1/T1aHfVK+dOWleQvlg= +github.com/auth0/go-auth0/v3 v3.4.0 h1:CjdnuuDUcVG19BIT7bloEYtyQHpIYr6rwQI2d1Wz7Fk= +github.com/auth0/go-auth0/v3 v3.4.0/go.mod h1:MGifkH9wfgGbWsgFPrz2QbM2wLmScH1kGgIvAtd65Xw= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -288,12 +288,12 @@ golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= -golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= -golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= +golang.org/x/oauth2 v0.37.0 h1:JUlcxA8oAtauLfiH8FX2/FkAWHAdi0QtGCGc+hofE98= +golang.org/x/oauth2 v0.37.0/go.mod h1:IxwZNxUULJmpBFf9K/9NTMSIfZZuvuTy1gGxhigP/58= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= -golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= +golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -304,8 +304,8 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= diff --git a/internal/auth/auth.go b/internal/auth/auth.go index 87c24ce7d..3aea29b83 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -134,7 +134,8 @@ var RequiredScopes = []string{ "create:email_templates", "read:email_templates", "update:email_templates", "create:email_provider", "read:email_provider", "update:email_provider", "delete:email_provider", "read:flows", "create:flows", "update:flows", "delete:flows", - "read:flows_executions", "read:forms", + "read:flows_executions", + "read:forms", "create:forms", "update:forms", "delete:forms", "read:flows_vault_connections", "create:flows_vault_connections", "update:flows_vault_connections", "delete:flows_vault_connections", "read:connections", "update:connections", "read:connections_options", "update:connections_options", "read:client_keys", "read:logs", "read:tenant_settings", "update:tenant_settings", diff --git a/internal/auth0/auth0.go b/internal/auth0/auth0.go index de30fc442..1ec8df22f 100644 --- a/internal/auth0/auth0.go +++ b/internal/auth0/auth0.go @@ -22,7 +22,6 @@ type API struct { EventStream EventStreamAPI Flow FlowAPI FlowVaultConnection FlowVaultConnectionAPI - Form FormAPI Log LogAPI LogStream LogStreamAPI Organization OrganizationAPI @@ -56,7 +55,6 @@ func NewAPI(m *management.Management) *API { EventStream: m.EventStream, Flow: m.Flow, FlowVaultConnection: m.Flow.Vault, - Form: m.Form, Log: m.Log, LogStream: m.LogStream, Organization: m.Organization, @@ -80,6 +78,7 @@ type APIV3 struct { ClientGrant ClientGrantAPIV3 ClientGrantOrganization ClientGrantOrganizationAPIV3 Events EventsAPIV3 + Form FormAPIV3 Flow FlowAPIV3 FlowExecution FlowExecutionAPIV3 FlowVaultConnection FlowVaultConnectionAPIV3 @@ -98,6 +97,7 @@ func NewAPIV3(m *managementv3.Management) *APIV3 { ClientGrant: m.ClientGrants, ClientGrantOrganization: m.ClientGrants.Organizations, Events: m.Events, + Form: m.Forms, Flow: m.Flows, FlowExecution: m.Flows.Executions, FlowVaultConnection: m.Flows.Vault.Connections, diff --git a/internal/auth0/form.go b/internal/auth0/form.go index 20d562b42..f6dea7cf1 100644 --- a/internal/auth0/form.go +++ b/internal/auth0/form.go @@ -5,22 +5,43 @@ package auth0 import ( "context" - "github.com/auth0/go-auth0/management" + managementv3 "github.com/auth0/go-auth0/v3/management" + "github.com/auth0/go-auth0/v3/management/core" + "github.com/auth0/go-auth0/v3/management/option" ) -type FormAPI interface { - // Create a new form. - Create(ctx context.Context, r *management.Form, opts ...management.RequestOption) error - - // Read form details. - Read(ctx context.Context, id string, opts ...management.RequestOption) (r *management.Form, err error) - - // Update an existing action. - Update(ctx context.Context, id string, r *management.Form, opts ...management.RequestOption) error - - // Delete an action. - Delete(ctx context.Context, id string, opts ...management.RequestOption) error - - // List form. - List(ctx context.Context, opts ...management.RequestOption) (r *management.FormList, err error) +// FormSummaryPage aliases the paginated forms list response. The alias keeps the +// interface return type a single identifier so mockgen's source parser can handle +// it (it cannot parse the multi-type-parameter generic inline). +type FormSummaryPage = core.Page[*int, *managementv3.FormSummary, *managementv3.ListFormsOffsetPaginatedResponseContent] + +// FormAPIV3 is the V3 SDK interface for the /forms endpoint. +type FormAPIV3 interface { + // List forms. + // + // Required scope: `read:forms`. + List( + ctx context.Context, + request *managementv3.ListFormsRequestParameters, + opts ...option.RequestOption, + ) (*FormSummaryPage, error) + + // Get retrieves a form by its ID. + // + // Required scope: `read:forms`. + Get( + ctx context.Context, + id string, + request *managementv3.GetFormRequestParameters, + opts ...option.RequestOption, + ) (*managementv3.GetFormResponseContent, error) + + // Delete a form. + // + // Required scope: `delete:forms`. + Delete( + ctx context.Context, + id string, + opts ...option.RequestOption, + ) error } diff --git a/internal/auth0/mock/form_mock.go b/internal/auth0/mock/form_mock.go index 57ea28712..139d13621 100644 --- a/internal/auth0/mock/form_mock.go +++ b/internal/auth0/mock/form_mock.go @@ -13,55 +13,38 @@ import ( context "context" reflect "reflect" - management "github.com/auth0/go-auth0/management" + auth0 "github.com/auth0/auth0-cli/internal/auth0" + management "github.com/auth0/go-auth0/v3/management" + option "github.com/auth0/go-auth0/v3/management/option" gomock "go.uber.org/mock/gomock" ) -// MockFormAPI is a mock of FormAPI interface. -type MockFormAPI struct { +// MockFormAPIV3 is a mock of FormAPIV3 interface. +type MockFormAPIV3 struct { ctrl *gomock.Controller - recorder *MockFormAPIMockRecorder + recorder *MockFormAPIV3MockRecorder isgomock struct{} } -// MockFormAPIMockRecorder is the mock recorder for MockFormAPI. -type MockFormAPIMockRecorder struct { - mock *MockFormAPI +// MockFormAPIV3MockRecorder is the mock recorder for MockFormAPIV3. +type MockFormAPIV3MockRecorder struct { + mock *MockFormAPIV3 } -// NewMockFormAPI creates a new mock instance. -func NewMockFormAPI(ctrl *gomock.Controller) *MockFormAPI { - mock := &MockFormAPI{ctrl: ctrl} - mock.recorder = &MockFormAPIMockRecorder{mock} +// NewMockFormAPIV3 creates a new mock instance. +func NewMockFormAPIV3(ctrl *gomock.Controller) *MockFormAPIV3 { + mock := &MockFormAPIV3{ctrl: ctrl} + mock.recorder = &MockFormAPIV3MockRecorder{mock} return mock } // EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockFormAPI) EXPECT() *MockFormAPIMockRecorder { +func (m *MockFormAPIV3) EXPECT() *MockFormAPIV3MockRecorder { return m.recorder } -// Create mocks base method. -func (m *MockFormAPI) Create(ctx context.Context, r *management.Form, opts ...management.RequestOption) error { - m.ctrl.T.Helper() - varargs := []any{ctx, r} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "Create", varargs...) - ret0, _ := ret[0].(error) - return ret0 -} - -// Create indicates an expected call of Create. -func (mr *MockFormAPIMockRecorder) Create(ctx, r any, opts ...any) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, r}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockFormAPI)(nil).Create), varargs...) -} - // Delete mocks base method. -func (m *MockFormAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { +func (m *MockFormAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { m.ctrl.T.Helper() varargs := []any{ctx, id} for _, a := range opts { @@ -73,67 +56,48 @@ func (m *MockFormAPI) Delete(ctx context.Context, id string, opts ...management. } // Delete indicates an expected call of Delete. -func (mr *MockFormAPIMockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { +func (mr *MockFormAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() varargs := append([]any{ctx, id}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFormAPI)(nil).Delete), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFormAPIV3)(nil).Delete), varargs...) } -// List mocks base method. -func (m *MockFormAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.FormList, error) { +// Get mocks base method. +func (m *MockFormAPIV3) Get(ctx context.Context, id string, request *management.GetFormRequestParameters, opts ...option.RequestOption) (*management.GetFormResponseContent, error) { m.ctrl.T.Helper() - varargs := []any{ctx} + varargs := []any{ctx, id, request} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "List", varargs...) - ret0, _ := ret[0].(*management.FormList) + ret := m.ctrl.Call(m, "Get", varargs...) + ret0, _ := ret[0].(*management.GetFormResponseContent) ret1, _ := ret[1].(error) return ret0, ret1 } -// List indicates an expected call of List. -func (mr *MockFormAPIMockRecorder) List(ctx any, opts ...any) *gomock.Call { +// Get indicates an expected call of Get. +func (mr *MockFormAPIV3MockRecorder) Get(ctx, id, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFormAPI)(nil).List), varargs...) + varargs := append([]any{ctx, id, request}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockFormAPIV3)(nil).Get), varargs...) } -// Read mocks base method. -func (m *MockFormAPI) Read(ctx context.Context, id string, opts ...management.RequestOption) (*management.Form, error) { +// List mocks base method. +func (m *MockFormAPIV3) List(ctx context.Context, request *management.ListFormsRequestParameters, opts ...option.RequestOption) (*auth0.FormSummaryPage, error) { m.ctrl.T.Helper() - varargs := []any{ctx, id} + varargs := []any{ctx, request} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "Read", varargs...) - ret0, _ := ret[0].(*management.Form) + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*auth0.FormSummaryPage) ret1, _ := ret[1].(error) return ret0, ret1 } -// Read indicates an expected call of Read. -func (mr *MockFormAPIMockRecorder) Read(ctx, id any, opts ...any) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, id}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Read", reflect.TypeOf((*MockFormAPI)(nil).Read), varargs...) -} - -// Update mocks base method. -func (m *MockFormAPI) Update(ctx context.Context, id string, r *management.Form, opts ...management.RequestOption) error { - m.ctrl.T.Helper() - varargs := []any{ctx, id, r} - for _, a := range opts { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "Update", varargs...) - ret0, _ := ret[0].(error) - return ret0 -} - -// Update indicates an expected call of Update. -func (mr *MockFormAPIMockRecorder) Update(ctx, id, r any, opts ...any) *gomock.Call { +// List indicates an expected call of List. +func (mr *MockFormAPIV3MockRecorder) List(ctx, request any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx, id, r}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockFormAPI)(nil).Update), varargs...) + varargs := append([]any{ctx, request}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFormAPIV3)(nil).List), varargs...) } diff --git a/internal/cli/data_json.go b/internal/cli/data_json.go index 28b68dd19..ef53552be 100644 --- a/internal/cli/data_json.go +++ b/internal/cli/data_json.go @@ -57,7 +57,7 @@ func (h *DataJSONHandler) ReadAndValidate(inputStr, method, path string) (json.R return nil, fmt.Errorf("schema validation failed:\n%s", formatValidationErrors(result.Errors)) } - return json.RawMessage(jsonData), nil + return jsonData, nil } // readJSONInput reads JSON from various input sources. diff --git a/internal/cli/forms.go b/internal/cli/forms.go new file mode 100644 index 000000000..e9616f6bb --- /dev/null +++ b/internal/cli/forms.go @@ -0,0 +1,1094 @@ +package cli + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "os" + + managementv3 "github.com/auth0/go-auth0/v3/management" + "github.com/auth0/go-auth0/v3/management/core" + "github.com/spf13/cobra" + + "github.com/auth0/auth0-cli/internal/ansi" + "github.com/auth0/auth0-cli/internal/iostream" + "github.com/auth0/auth0-cli/internal/prompt" +) + +// formCreateSkeleton seeds the editor for interactive form creation. The name is +// prompted separately, so the seed carries empty containers for all writable fields. +const formCreateSkeleton = `{ + "messages": {}, + "languages": {}, + "translations": {}, + "nodes": [], + "start": {}, + "ending": {}, + "style": {} +} +` + +const formCreateExample = `{ + "name": "Customer Profile Form", + "languages": { + "primary": "en", + "default": "en" + }, + "start": { + "next_node": "step_profile", + "coordinates": { + "x": 0, + "y": 0 + } + }, + "nodes": [ + { + "id": "step_profile", + "type": "STEP", + "coordinates": { + "x": 300, + "y": 0 + }, + "alias": "Collect profile", + "config": { + "components": [ + { + "id": "full_name", + "category": "FIELD", + "type": "TEXT", + "label": "Full name", + "required": true, + "sensitive": false, + "config": { + "multiline": false + } + }, + { + "id": "continue_button", + "category": "BLOCK", + "type": "NEXT_BUTTON", + "config": { + "text": "Continue" + } + } + ], + "next_node": "$ending" + } + } + ], + "ending": { + "resume_flow": true, + "coordinates": { + "x": 600, + "y": 0 + } + } +} +` + +// formServerManagedFields cannot be sent in create or update request bodies. +var formServerManagedFields = []string{ + "id", + "created_at", + "updated_at", + "embedded_at", + "submitted_at", + "flow_count", + "links", +} + +// formEditorSeed controls the field order in the interactive editor seed. +type formEditorSeed struct { + Name json.RawMessage `json:"name,omitempty"` + Messages json.RawMessage `json:"messages,omitempty"` + Languages json.RawMessage `json:"languages,omitempty"` + Translations json.RawMessage `json:"translations,omitempty"` + Nodes json.RawMessage `json:"nodes,omitempty"` + Start json.RawMessage `json:"start,omitempty"` + Ending json.RawMessage `json:"ending,omitempty"` + Style json.RawMessage `json:"style,omitempty"` +} + +var ( + formID = Argument{ + Name: "Id", + Help: "Id of the Form.", + } + + formName = Flag{ + Name: "Name", + LongForm: "name", + Help: "Name of the Form.", + } + + formLanguagePrimary = Flag{ + Name: "Language Primary", + LongForm: "language-primary", + Help: "Primary language of the Form (e.g. en).", + } + + formLanguageDefault = Flag{ + Name: "Language Default", + LongForm: "language-default", + Help: "Default language of the Form (e.g. en).", + } + + formOutput = Flag{ + Name: "Output", + LongForm: "output", + ShortForm: "o", + Help: "Path to write the exported form. Writes to stdout when omitted.", + } + + formImportID = Flag{ + Name: "Id", + LongForm: "id", + Help: "Id of an existing Form to replace. When omitted, a new form is created.", + } + + formExample = Flag{ + Name: "Example", + LongForm: "example", + Help: "Print an example form JSON body and exit.", + } +) + +func formsCmd(cli *cli) *cobra.Command { + cmd := &cobra.Command{ + Use: "forms", + Short: "Manage Forms", + Long: "Forms are customizable screens you can insert into a flow to collect input " + + "from users during authentication and other journeys.", + } + + cmd.SetUsageTemplate(resourceUsageTemplate()) + cmd.AddCommand(listFormsCmd(cli)) + cmd.AddCommand(showFormCmd(cli)) + cmd.AddCommand(createFormCmd(cli)) + cmd.AddCommand(updateFormCmd(cli)) + cmd.AddCommand(deleteFormCmd(cli)) + cmd.AddCommand(exportFormCmd(cli)) + cmd.AddCommand(importFormCmd(cli)) + cmd.AddCommand(openFormCmd(cli)) + + return cmd +} + +func listFormsCmd(cli *cli) *cobra.Command { + var inputs struct { + Number int + } + + cmd := &cobra.Command{ + Use: "list", + Aliases: []string{"ls"}, + Args: cobra.NoArgs, + Short: "List your forms", + Long: "List your existing forms. To create one, run: `auth0 forms create`.", + Example: ` auth0 forms list + auth0 forms ls + auth0 forms ls --number 100 + auth0 forms ls --json + auth0 forms ls --csv`, + RunE: func(cmd *cobra.Command, args []string) error { + params := &managementv3.ListFormsRequestParameters{} + + var forms []*managementv3.FormSummary + if err := ansi.Waiting(func() (err error) { + forms, err = collectForms(cmd.Context(), cli, params, inputs.Number) + return err + }); err != nil { + return fmt.Errorf("failed to list forms: %w", err) + } + + return cli.renderer.FormsList(forms) + }, + } + + cmd.Flags().IntVarP(&inputs.Number, "number", "n", 100, "Number of forms to retrieve. Fetched across pages.") + cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") + cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") + cmd.Flags().BoolVar(&cli.csv, "csv", false, "Output in csv format.") + cmd.MarkFlagsMutuallyExclusive("json", "json-compact", "csv") + + return cmd +} + +func showFormCmd(cli *cli) *cobra.Command { + var inputs struct { + ID string + } + + cmd := &cobra.Command{ + Use: "show", + Args: cobra.MaximumNArgs(1), + Short: "Show a form", + Long: "Display information about a form.", + Example: ` auth0 forms show + auth0 forms show + auth0 forms show --json + auth0 forms show --json-compact`, + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + if err := formID.Pick(cmd, &inputs.ID, cli.formPickerOptions); err != nil { + return err + } + } else { + inputs.ID = args[0] + } + + form, err := cli.formRawGet(cmd.Context(), inputs.ID) + if err != nil { + return fmt.Errorf("failed to read form with ID %q: %w", inputs.ID, err) + } + + return cli.renderer.FormShowRaw(form) + }, + } + + cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") + cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") + + return cmd +} + +func createFormCmd(cli *cli) *cobra.Command { + var inputs struct { + Name string + Data string + LanguagePrimary string + LanguageDefault string + Example bool + Schema bool + } + + cmd := &cobra.Command{ + Use: "create", + Args: cobra.NoArgs, + Short: "Create a new form", + Long: "Create a new form.\n\n" + + "Interactive behavior: `auth0 forms create` asks for the name, then offers to author the " + + "form body in an editor. Decline the prompt to create a minimal scaffold and refine it " + + "in the dashboard builder instead.\n\n" + + "Alternatively, supply " + + "the whole body via `--data` as inline JSON, a file (`@form.json`), or piped stdin. Run " + + "`auth0 forms create --schema` to print the accepted payload schema and " + + "`auth0 forms create --example > form.json` to generate a starter body.\n\n" + + "`--data` provides the whole payload and cannot be combined with `--name` or the " + + "`--language-*` flags; it is checked for valid JSON and a form name before it is sent, " + + "and the form graph itself is validated by the API.", + Example: ` auth0 forms create + auth0 forms create --name "My Form" + auth0 forms create --example > form.json + auth0 forms create --schema + auth0 forms create --data '{"name":"My Form"}' + auth0 forms create --data @form.json + cat form.json | auth0 forms create`, + RunE: func(cmd *cobra.Command, args []string) error { + if inputs.Example { + cli.renderer.FormExport(formCreateExample) + return nil + } + + // Schema discovery mode: print the request payload and exit. + if inputs.Schema { + return printOperationSchema(cli, http.MethodPost, "/forms") + } + + // JSON input mode (for agents and automation): explicit --data or piped + // stdin. The body is sent verbatim so STEP/ROUTER node config is preserved. + dataStr, provided, err := ResolveData(cmd) + if err != nil { + return err + } + if provided { + return cli.createFormFromJSON(cmd, dataStr) + } + + // Interactive: the name is a required scalar, so prompt for it (only when + // interactive and --name was not supplied). + if err := formName.Ask(cmd, &inputs.Name, nil); err != nil { + return err + } + if inputs.Name == "" { + return errors.New("a form name is required; supply --name, --data, or pipe JSON via stdin") + } + + rawBody := json.RawMessage(formCreateSkeleton) + // When the name was gathered interactively, offer to author the body + // now. Declining creates a minimal scaffold to refine in the dashboard + // builder later. + if canPrompt(cmd) { + cli.renderer.Infof("A form body is the JSON graph behind the screen: the fields, " + + "buttons and blocks users see, the steps and routing between them, plus languages " + + "and styling. You can author it now, or skip and design it visually in the dashboard.") + if prompt.ConfirmWithDefault("Do you want to author the form body now?", false) { + if err := editFormJSON(cli, formCreateSkeleton, &rawBody); err != nil { + return err + } + } + } + + rawBody, err = applyRawFormOverrides( + rawBody, + inputs.Name, + inputs.LanguagePrimary, + inputs.LanguageDefault, + ) + if err != nil { + return fmt.Errorf("failed to build form body: %w", err) + } + + created, err := cli.formRawCreate(cmd.Context(), rawBody) + if err != nil { + return fmt.Errorf("failed to create form: %w", err) + } + if err := cli.renderer.FormCreateRaw(created); err != nil { + return err + } + + id, err := rawFormStringField(created, "id") + if err != nil { + return fmt.Errorf("failed to parse created form: %w", err) + } + formNextStepsHint(cli, id) + return nil + }, + } + + formName.RegisterString(cmd, &inputs.Name, "") + dataFlag.RegisterString(cmd, &inputs.Data, "") + formLanguagePrimary.RegisterString(cmd, &inputs.LanguagePrimary, "") + formLanguageDefault.RegisterString(cmd, &inputs.LanguageDefault, "") + formExample.RegisterBool(cmd, &inputs.Example, false) + schemaFlag.RegisterBool(cmd, &inputs.Schema, false) + cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") + cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") + + // --data supplies the whole payload, so it cannot be combined with the + // granular input flags. Output flags (--json) and --schema are not affected. + markDataExclusive(cmd) + + return cmd +} + +// createFormFromJSON creates a form from a --data JSON payload, sent verbatim +// to preserve node config the v3 SDK's union types would drop. +func (c *cli) createFormFromJSON(cmd *cobra.Command, dataStr string) error { + payload, err := validateFormData(c, dataStr, "auth0 forms create", true, nil) + if err != nil { + return err + } + + created, err := c.formRawCreate(cmd.Context(), payload) + if err != nil { + return fmt.Errorf("failed to create form: %w", err) + } + if err := c.renderer.FormCreateRaw(created); err != nil { + return err + } + + id, err := rawFormStringField(created, "id") + if err != nil { + return fmt.Errorf("failed to parse created form: %w", err) + } + formNextStepsHint(c, id) + return nil +} + +func updateFormCmd(cli *cli) *cobra.Command { + var inputs struct { + ID string + Name string + Data string + LanguagePrimary string + LanguageDefault string + Schema bool + } + + cmd := &cobra.Command{ + Use: "update", + Args: cobra.MaximumNArgs(1), + Short: "Update a form", + Long: "Update a form.\n\n" + + "Passing `--data` as inline JSON, a file (`@form.json`), or piped stdin replaces every " + + "top-level field present in the payload. The payload is checked for valid JSON before it " + + "is sent, and the form graph itself is validated by the API. Passing only scalar flags " + + "such as `--name` performs a merge that " + + "preserves the form's graph fields (nodes, style, translations). Server-managed fields " + + "such as `id`, `created_at`, and `updated_at` are removed before the update request is " + + "sent.\n\n" + + "`--data` provides the whole payload and cannot be combined with `--name` or the " + + "`--language-*` flags. Run `auth0 forms update --schema` to print the accepted payload schema.", + Example: ` auth0 forms update --name "New Name" + auth0 forms update --schema + auth0 forms update --data '{"name":"New Name"}' + auth0 forms update --data @form.json + cat form.json | auth0 forms update `, + RunE: func(cmd *cobra.Command, args []string) error { + // Schema discovery mode: print the request payload and exit. + // This does not require a form ID. + if inputs.Schema { + return printOperationSchema(cli, http.MethodPatch, "/forms/{id}") + } + + if len(args) > 0 { + inputs.ID = args[0] + } else { + if err := formID.Pick(cmd, &inputs.ID, cli.formPickerOptions); err != nil { + return err + } + } + + // JSON input mode (for agents and automation): explicit --data or piped stdin. + dataStr, provided, err := ResolveData(cmd) + if err != nil { + return err + } + + var rawBody json.RawMessage + + switch { + case provided: + // --data / stdin: whole-payload overwrite. Validated for JSON and sent + // verbatim; server-managed fields are stripped inside formRawUpdate. + rawBody, err = validateFormData( + cli, + dataStr, + "auth0 forms update", + false, + nil, + ) + if err != nil { + return err + } + case inputs.Name != "" || inputs.LanguagePrimary != "" || inputs.LanguageDefault != "": + primary := inputs.LanguagePrimary + def := inputs.LanguageDefault + if primary != "" || def != "" { + // The API replaces the languages object, so retain the value that was + // not explicitly overridden. This scalar read is safe through v3. + var current *managementv3.GetFormResponseContent + if err := ansi.Waiting(func() (err error) { + current, err = cli.apiv3.Form.Get( + cmd.Context(), + inputs.ID, + &managementv3.GetFormRequestParameters{}, + ) + return err + }); err != nil { + return fmt.Errorf("failed to read form with ID %q: %w", inputs.ID, err) + } + languages := current.GetLanguages() + if primary == "" { + primary = languages.GetPrimary() + } + if def == "" { + def = languages.GetDefault() + } + } + + rawBody, err = applyRawFormOverrides(json.RawMessage(`{}`), inputs.Name, primary, def) + if err != nil { + return fmt.Errorf("failed to build form update: %w", err) + } + case canPrompt(cmd): + // Editor fallback: strip server-managed fields, reorder for DX, and full-replace. + current, err := cli.formRawGet(cmd.Context(), inputs.ID) + if err != nil { + return fmt.Errorf("failed to read form with ID %q: %w", inputs.ID, err) + } + + var form map[string]json.RawMessage + if err := json.Unmarshal(current, &form); err != nil { + return fmt.Errorf("failed to parse form with ID %q: %w", inputs.ID, err) + } + for _, f := range formServerManagedFields { + delete(form, f) + } + + seedBytes, err := json.MarshalIndent(formEditorSeed{ + Name: form["name"], + Messages: form["messages"], + Languages: form["languages"], + Translations: form["translations"], + Nodes: form["nodes"], + Start: form["start"], + Ending: form["ending"], + Style: form["style"], + }, "", " ") + if err != nil { + return fmt.Errorf("failed to build form editor seed for %q: %w", inputs.ID, err) + } + + if err := editFormJSON(cli, string(seedBytes), &rawBody); err != nil { + return err + } + default: + return errors.New("nothing to update; supply --data, pipe JSON via stdin, or a scalar flag such as --name") + } + + updated, err := cli.formRawUpdate(cmd.Context(), inputs.ID, rawBody) + if err != nil { + return fmt.Errorf("failed to update form with ID %q: %w", inputs.ID, err) + } + if err := cli.renderer.FormUpdateRaw(updated); err != nil { + return err + } + formNextStepsHint(cli, inputs.ID) + return nil + }, + } + + formName.RegisterStringU(cmd, &inputs.Name, "") + dataFlag.RegisterString(cmd, &inputs.Data, "") + formLanguagePrimary.RegisterStringU(cmd, &inputs.LanguagePrimary, "") + formLanguageDefault.RegisterStringU(cmd, &inputs.LanguageDefault, "") + schemaFlag.RegisterBool(cmd, &inputs.Schema, false) + cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") + cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") + + // --data supplies the whole payload, so it cannot be combined with the + // granular input flags. Output flags (--json) and --schema are not affected. + markDataExclusive(cmd) + + return cmd +} + +func deleteFormCmd(cli *cli) *cobra.Command { + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"rm"}, + Args: cobra.ArbitraryArgs, + Short: "Delete a form", + Long: "Delete a form.\n\n" + + "To delete interactively, use `auth0 forms delete` with no arguments.\n\n" + + "To delete non-interactively, supply the form id and the `--force` flag to skip confirmation.", + Example: ` auth0 forms delete + auth0 forms rm + auth0 forms delete + auth0 forms delete --force + auth0 forms delete `, + RunE: func(cmd *cobra.Command, args []string) error { + var ids []string + if len(args) == 0 { + if err := formID.PickMany(cmd, &ids, cli.formPickerOptions); err != nil { + return err + } + } else { + ids = args + } + + if !cli.force && cli.agentMode { + return errDestructiveNoConfirm + } + + if !cli.force && canPrompt(cmd) { + if confirmed := prompt.Confirm("Are you sure you want to proceed?"); !confirmed { + return nil + } + } + + return ansi.ProgressBar("Deleting form(s)", ids, func(_ int, id string) error { + if id == "" { + return nil + } + if err := cli.apiv3.Form.Delete(cmd.Context(), id); err != nil { + return fmt.Errorf("failed to delete form with ID %q: %w", id, err) + } + return nil + }) + }, + } + + cmd.Flags().BoolVar(&cli.force, "force", false, "Skip confirmation.") + + return cmd +} + +func exportFormCmd(cli *cli) *cobra.Command { + var inputs struct { + ID string + Output string + Compact bool + } + + cmd := &cobra.Command{ + Use: "export", + Args: cobra.MaximumNArgs(1), + Short: "Export a form", + Long: "Export a form as JSON. Writes to stdout by default (pipe-friendly) or to a file " + + "with `--output`. The output uses the same envelope as the Auth0 Dashboard " + + "(`version`, `form`, `flows`, `connections`), bundling the flows and vault connections " + + "the form references with portable `#FLOW-N#`/`#CONN-N#` placeholders, so it can be " + + "imported by the CLI or opened in the Dashboard.", + Example: ` auth0 forms export + auth0 forms export --output ./form.json + auth0 forms export --json-compact + auth0 forms export | auth0 forms import`, + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + if err := formID.Pick(cmd, &inputs.ID, cli.formPickerOptions); err != nil { + return err + } + } else { + inputs.ID = args[0] + } + + form, err := cli.formRawGet(cmd.Context(), inputs.ID) + if err != nil { + return fmt.Errorf("failed to read form with ID %q: %w", inputs.ID, err) + } + + env, err := cli.buildFormEnvelope(cmd.Context(), form) + if err != nil { + return err + } + + var data []byte + if inputs.Compact { + data, err = json.Marshal(env) + } else { + data, err = json.MarshalIndent(env, "", " ") + } + if err != nil { + return fmt.Errorf("failed to marshal form: %w", err) + } + + if inputs.Output != "" { + if err := os.WriteFile(inputs.Output, data, 0600); err != nil { + return fmt.Errorf("failed to write form to %q: %w", inputs.Output, err) + } + cli.renderer.Infof("Exported form %s to %s", inputs.ID, inputs.Output) + return nil + } + + cli.renderer.FormExport(string(data)) + return nil + }, + } + + formOutput.RegisterString(cmd, &inputs.Output, "") + cmd.Flags().BoolVar(&inputs.Compact, "json-compact", false, "Output in compact json format.") + + return cmd +} + +func importFormCmd(cli *cli) *cobra.Command { + var inputs struct { + ID string + Data string + Connections map[string]string + } + + cmd := &cobra.Command{ + Use: "import", + Args: cobra.NoArgs, + Short: "Import a form", + Long: "Import a form from `--data`, given as inline JSON, a file (`@form.json`), or piped " + + "stdin. Without `--id` a new form is created; with `--id` the existing form is replaced.\n\n" + + "Both a flat form graph and the Dashboard envelope (`version`, `form`, `flows`, " + + "`connections`) are accepted. For an envelope, the bundled flows are created and each " + + "`#CONN-N#` connection placeholder is mapped to an existing vault connection, either " + + "interactively or with `--connection`.", + Example: ` auth0 forms import --data @form.json + auth0 forms import --data @form.json --id + auth0 forms import --data @form.json --connection '#CONN-1#=ac_123' + auth0 forms export | auth0 forms import`, + RunE: func(cmd *cobra.Command, args []string) error { + body, err := readFormData(cmd) + if err != nil { + return err + } + if body == nil { + return errors.New("no form body provided; supply --data or pipe JSON via stdin") + } + + if isFormEnvelope(body) { + resolved, err := cli.resolveFormEnvelope(cmd, body, inputs.Connections) + if err != nil { + return err + } + body = resolved + } + + // Parse just enough to validate the JSON and read the name. The body is + // created/updated as raw JSON so STEP/ROUTER node config is preserved + // (the typed request models drop it via the lossy FormNode union). + var meta struct { + Name string `json:"name"` + } + if err := json.Unmarshal(body, &meta); err != nil { + return fmt.Errorf("failed to parse form body: %w", err) + } + + if inputs.ID == "" { + if meta.Name == "" { + return errors.New("a form name is required in the imported body") + } + + raw, err := cli.formRawCreate(cmd.Context(), body) + if err != nil { + return fmt.Errorf("failed to create form: %w", err) + } + + return cli.renderer.FormCreateRaw(raw) + } + + raw, err := cli.formRawUpdate(cmd.Context(), inputs.ID, body) + if err != nil { + return fmt.Errorf("failed to update form with ID %q: %w", inputs.ID, err) + } + + return cli.renderer.FormUpdateRaw(raw) + }, + } + + dataFlag.RegisterString(cmd, &inputs.Data, "") + formImportID.RegisterString(cmd, &inputs.ID, "") + cmd.Flags().StringToStringVar(&inputs.Connections, "connection", nil, + "Map an exported connection placeholder to an existing vault connection ID, "+ + "e.g. --connection '#CONN-1#=ac_123'. Repeatable.") + cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") + cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") + + return cmd +} + +func openFormCmd(cli *cli) *cobra.Command { + var inputs struct { + ID string + } + + cmd := &cobra.Command{ + Use: "open", + Args: cobra.MaximumNArgs(1), + Short: "Open a form in the Auth0 Dashboard", + Long: "Open a form's page in the Auth0 Dashboard form builder.", + Example: ` auth0 forms open + auth0 forms open `, + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + if err := formID.Pick(cmd, &inputs.ID, cli.formPickerOptions); err != nil { + return err + } + } else { + inputs.ID = args[0] + } + + openBuilderURL(cli, fmt.Sprintf("forms/%s/edit", inputs.ID)) + + return nil + }, + } + + return cmd +} + +// editFormJSON opens an editor seeded with `seed` and unmarshals the result into +// `target`. When the buffer is not valid JSON it re-opens the editor with the +// user's edits intact rather than discarding them, so a typo never costs work. +func editFormJSON(cli *cli, seed string, target interface{}) error { + content := seed + for { + var edited string + if err := openCreateEditor(&edited, content, "form.*.json", nil, nil); err != nil { + return err + } + + if err := json.Unmarshal([]byte(edited), target); err != nil { + cli.renderer.Warnf("The form body is not valid JSON: %s", err) + if !prompt.Confirm("Re-open the editor to fix it?") { + return errors.New("aborted; the form was not saved") + } + content = edited + continue + } + + return nil + } +} + +// formNextStepsHint prints follow-up commands after a form is created or updated. +// It stays quiet in JSON output modes so scripted consumers get a clean stream. +func formNextStepsHint(cli *cli, id string) { + if id == "" || cli.json || cli.jsonCompact { + return + } + cli.renderer.Infof("Inspect it with: %s", ansi.Faint("auth0 forms show "+id)) + cli.renderer.Infof("Edit it in the dashboard with: %s", ansi.Faint("auth0 forms open "+id)) +} + +// readFormData resolves a JSON body from --data or piped stdin, returning nil +// when neither is available. Does not reject other set flags, so import can +// combine --data with --id and --connection. +func readFormData(cmd *cobra.Command) ([]byte, error) { + if HasData(cmd) { + value, _ := GetData(cmd) + if value != "" && value[0] == '@' { + data, err := os.ReadFile(value[1:]) + if err != nil { + return nil, fmt.Errorf("failed to read form file %q: %w", value[1:], err) + } + return data, nil + } + return []byte(value), nil + } + if piped := iostream.PipedInput(); len(piped) > 0 { + return piped, nil + } + return nil, nil +} + +// validateFormData validates a --data JSON payload and returns the raw bytes to +// send verbatim. Only the envelope is checked locally (valid JSON object, non-empty +// "name" when requireName is set) because the v3 SDK's union types are lossy and +// the OpenAPI schema cannot faithfully represent the form graph (e.g. the "$ending" +// node pointer trips the schema's non-exclusive oneOf). The API validates the graph +// server-side. PreClean runs before validation when non-nil. +func validateFormData( + cli *cli, + dataStr, schemaCmd string, + requireName bool, + preClean func(json.RawMessage) (json.RawMessage, error), +) (json.RawMessage, error) { + handler := &DataJSONHandler{cli: cli} + + raw, err := handler.readJSONInput(dataStr) + if err != nil { + return nil, fmt.Errorf("failed to read JSON input: %w", err) + } + + if preClean != nil { + raw, err = preClean(raw) + if err != nil { + return nil, fmt.Errorf("failed to parse form body: %w", err) + } + } + + var form map[string]json.RawMessage + if err := json.Unmarshal(raw, &form); err != nil { + cli.renderer.Infof("Run '%s --schema' to see the accepted schema.", schemaCmd) + return nil, fmt.Errorf("invalid JSON: the form payload must be a JSON object: %w", err) + } + + if requireName { + name, err := rawFormStringField(raw, "name") + if err != nil { + return nil, err + } + if name == "" { + cli.renderer.Infof("Run '%s --schema' to see the accepted schema.", schemaCmd) + return nil, errors.New(`the form payload must include a non-empty "name"`) + } + } + + return raw, nil +} + +// stripFormServerManagedFields removes the fields the API sets and rejects on +// write (id, timestamps, links) so an exported or previously-read form body can be +// sent back on create or update without a schema-additionalProperties violation. +func stripFormServerManagedFields(body json.RawMessage) (json.RawMessage, error) { + var form map[string]json.RawMessage + if err := json.Unmarshal(body, &form); err != nil { + return nil, err + } + for _, field := range formServerManagedFields { + delete(form, field) + } + return json.Marshal(form) +} + +// applyRawFormOverrides applies scalar flag overrides without deserializing the +// form graph into the v3 SDK's lossy union types. +func applyRawFormOverrides(body json.RawMessage, name, primary, def string) (json.RawMessage, error) { + var form map[string]json.RawMessage + if err := json.Unmarshal(body, &form); err != nil { + return nil, err + } + if form == nil { + return nil, errors.New("form body must be a JSON object") + } + + if name != "" { + encoded, err := json.Marshal(name) + if err != nil { + return nil, err + } + form["name"] = encoded + } + + if primary != "" || def != "" { + languages := make(map[string]json.RawMessage) + if existing := form["languages"]; len(existing) > 0 && string(existing) != "null" { + if err := json.Unmarshal(existing, &languages); err != nil { + return nil, fmt.Errorf("parse languages: %w", err) + } + } + if primary != "" { + encoded, err := json.Marshal(primary) + if err != nil { + return nil, err + } + languages["primary"] = encoded + } + if def != "" { + encoded, err := json.Marshal(def) + if err != nil { + return nil, err + } + languages["default"] = encoded + } + encoded, err := json.Marshal(languages) + if err != nil { + return nil, err + } + form["languages"] = encoded + } + + return json.Marshal(form) +} + +func rawFormStringField(body json.RawMessage, field string) (string, error) { + var form map[string]json.RawMessage + if err := json.Unmarshal(body, &form); err != nil { + return "", err + } + if form == nil { + return "", errors.New("form body must be a JSON object") + } + + raw, ok := form[field] + if !ok || string(raw) == "null" { + return "", nil + } + var value string + if err := json.Unmarshal(raw, &value); err != nil { + return "", fmt.Errorf("%s must be a string: %w", field, err) + } + return value, nil +} + +// formRawGet fetches a form through the v1 client's HTTP layer without using +// the v3 SDK's lossy form-node unions. +func (c *cli) formRawGet(ctx context.Context, id string) (json.RawMessage, error) { + return c.formRawRequest(ctx, http.MethodGet, c.api.HTTPClient.URI("forms", id), nil) +} + +// formRawCreate creates a form from raw JSON, stripping server-managed fields +// and preserving node config the typed CreateFormRequestContent would drop. +func (c *cli) formRawCreate(ctx context.Context, body json.RawMessage) (json.RawMessage, error) { + cleanBody, err := stripFormServerManagedFields(body) + if err != nil { + return nil, err + } + + return c.formRawRequest(ctx, http.MethodPost, c.api.HTTPClient.URI("forms"), cleanBody) +} + +// formRawUpdate replaces a form from raw JSON, preserving node config that the +// typed UpdateFormRequestContent would drop. It returns the updated form JSON. +func (c *cli) formRawUpdate(ctx context.Context, id string, body json.RawMessage) (json.RawMessage, error) { + cleanBody, err := stripFormServerManagedFields(body) + if err != nil { + return nil, err + } + + return c.formRawRequest(ctx, http.MethodPatch, c.api.HTTPClient.URI("forms", id), cleanBody) +} + +// formRawRequest sends a raw JSON request to the Management API and returns the +// response body, surfacing API errors the same way the `api` command does. +func (c *cli) formRawRequest( + ctx context.Context, + method string, + uri string, + body json.RawMessage, +) (json.RawMessage, error) { + var payload interface{} + if len(body) > 0 { + payload = body + } + + request, err := c.api.HTTPClient.NewRequest(ctx, method, uri, payload) + if err != nil { + return nil, err + } + + var out json.RawMessage + if err := ansi.Waiting(func() error { + response, err := c.api.HTTPClient.Do(request) + if err != nil { + return err + } + defer func() { + _ = response.Body.Close() + }() + + data, err := io.ReadAll(response.Body) + if err != nil { + return err + } + if response.StatusCode >= http.StatusBadRequest { + return newAPIResponseError(response.StatusCode, response.Header, data) + } + out = data + return nil + }); err != nil { + return nil, err + } + + return out, nil +} + +// collectForms pages through the forms list, collecting up to `limit` results +// (all results when limit <= 0). +func collectForms(ctx context.Context, cli *cli, params *managementv3.ListFormsRequestParameters, limit int) ([]*managementv3.FormSummary, error) { + page, err := cli.apiv3.Form.List(ctx, params) + if err != nil { + return nil, err + } + + var out []*managementv3.FormSummary + for page != nil { + for _, f := range page.Results { + out = append(out, f) + if limit > 0 && len(out) >= limit { + return out, nil + } + } + + page, err = page.GetNextPage(ctx) + if errors.Is(err, core.ErrNoPages) { + break + } + if err != nil { + return out, err + } + } + + return out, nil +} + +func (c *cli) formPickerOptions(ctx context.Context) (pickerOptions, error) { + forms, err := collectForms(ctx, c, &managementv3.ListFormsRequestParameters{}, 0) + if err != nil { + return nil, err + } + + var opts pickerOptions + for _, f := range forms { + label := fmt.Sprintf("%s %s", f.GetName(), ansi.Faint("("+f.GetID()+")")) + opts = append(opts, pickerOption{value: f.GetID(), label: label}) + } + + if len(opts) == 0 { + return nil, errors.New("there are currently no forms to choose from. Create one by running: `auth0 forms create`") + } + + return opts, nil +} diff --git a/internal/cli/forms_envelope.go b/internal/cli/forms_envelope.go new file mode 100644 index 000000000..a3fbee8b9 --- /dev/null +++ b/internal/cli/forms_envelope.go @@ -0,0 +1,403 @@ +package cli + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "sort" + + "github.com/auth0/go-auth0/management" + "github.com/spf13/cobra" + + "github.com/auth0/auth0-cli/internal/ansi" + "github.com/auth0/auth0-cli/internal/prompt" +) + +// formEnvelopeVersion is the schema version the Auth0 Dashboard form builder +// stamps on exported forms. We emit the same value so exports interop. +const formEnvelopeVersion = "4.0.0" + +// formEnvelope mirrors the export shape produced by the Auth0 Dashboard form +// builder: the form graph plus the flows and vault connections it references, +// with real resource IDs replaced by portable #FLOW-N#/#CONN-N# placeholders. +type formEnvelope struct { + Version string `json:"version"` + Form json.RawMessage `json:"form"` + Flows map[string]json.RawMessage `json:"flows,omitempty"` + Connections map[string]envelopeConn `json:"connections,omitempty"` +} + +// envelopeConn is the connection descriptor emitted alongside a form. Vault +// connection secrets are never exported, so on import the placeholder is mapped +// to an existing connection rather than recreated. +type envelopeConn struct { + ID string `json:"id"` + AppID string `json:"app_id,omitempty"` + Name string `json:"name,omitempty"` +} + +// isFormEnvelope reports whether the given body is a Dashboard-style envelope +// rather than a flat form graph. An envelope always carries a top-level "form" +// object, whereas a flat body carries the form fields such as name and nodes +// at the top level. +func isFormEnvelope(body []byte) bool { + var probe struct { + Form json.RawMessage `json:"form"` + } + if err := json.Unmarshal(body, &probe); err != nil { + return false + } + return len(probe.Form) > 0 +} + +// substituteIDs replaces every JSON string value that exactly matches a key in +// `replacements` with its mapped value, walking the whole tree. IDs are opaque +// unique tokens, so exact full-string matching is safe and order-independent. +func substituteIDs(raw json.RawMessage, replacements map[string]string) (json.RawMessage, error) { + if len(replacements) == 0 { + return raw, nil + } + + var tree interface{} + if err := json.Unmarshal(raw, &tree); err != nil { + return nil, err + } + + return json.Marshal(walkReplace(tree, replacements)) +} + +func walkReplace(node interface{}, replacements map[string]string) interface{} { + switch v := node.(type) { + case map[string]interface{}: + for key, val := range v { + v[key] = walkReplace(val, replacements) + } + return v + case []interface{}: + for i, val := range v { + v[i] = walkReplace(val, replacements) + } + return v + case string: + if replaced, ok := replacements[v]; ok { + return replaced + } + return v + default: + return node + } +} + +// collectConnectionIDs returns every value stored under a "connection_id" key +// anywhere in the given flow JSON, de-duplicated and sorted for stable ordering. +func collectConnectionIDs(raw json.RawMessage) ([]string, error) { + var tree interface{} + if err := json.Unmarshal(raw, &tree); err != nil { + return nil, err + } + + seen := map[string]bool{} + var walk func(node interface{}) + walk = func(node interface{}) { + switch v := node.(type) { + case map[string]interface{}: + for key, val := range v { + if key == "connection_id" { + if s, ok := val.(string); ok && s != "" { + seen[s] = true + } + } + walk(val) + } + case []interface{}: + for _, val := range v { + walk(val) + } + } + } + walk(tree) + + out := make([]string, 0, len(seen)) + for id := range seen { + out = append(out, id) + } + sort.Strings(out) + + return out, nil +} + +// collectFlowIDs returns the flow IDs referenced by the form's FLOW nodes, in +// node order and de-duplicated. Working from the raw form map avoids the v3 +// SDK's lossy FormNode union. +func collectFlowIDs(formMap map[string]interface{}) []string { + nodes, ok := formMap["nodes"].([]interface{}) + if !ok { + return nil + } + + var ids []string + seen := map[string]bool{} + for _, n := range nodes { + node, ok := n.(map[string]interface{}) + if !ok || node["type"] != "FLOW" { + continue + } + config, ok := node["config"].(map[string]interface{}) + if !ok { + continue + } + id, ok := config["flow_id"].(string) + if !ok || id == "" || seen[id] { + continue + } + seen[id] = true + ids = append(ids, id) + } + + return ids +} + +// vaultConnectionPickerOptions lists the tenant's flow vault connections as +// selectable options for mapping envelope connection placeholders on import. +func (c *cli) vaultConnectionPickerOptions(ctx context.Context) (pickerOptions, error) { + var list *management.FlowVaultConnectionList + if err := ansi.Waiting(func() (err error) { + list, err = c.api.FlowVaultConnection.GetConnectionList(ctx) + return err + }); err != nil { + return nil, err + } + + var opts pickerOptions + for _, conn := range list.Connections { + label := fmt.Sprintf("%s %s", conn.GetName(), ansi.Faint("("+conn.GetID()+")")) + opts = append(opts, pickerOption{value: conn.GetID(), label: label}) + } + + if len(opts) == 0 { + return nil, errors.New("there are currently no vault connections to map to. Create one in the Auth0 Dashboard first") + } + + return opts, nil +} + +// resolveConnectionPlaceholders maps each #CONN-N# placeholder in the envelope +// to a real vault connection ID. It uses the provided mapping first and falls +// back to an interactive picker; without a terminal an unmapped placeholder is +// an error that tells the user to pass --connection. +func (c *cli) resolveConnectionPlaceholders( + cmd *cobra.Command, + env *formEnvelope, + mapping map[string]string, +) (map[string]string, error) { + placeholders := make([]string, 0, len(env.Connections)) + for ph := range env.Connections { + placeholders = append(placeholders, ph) + } + sort.Strings(placeholders) + + var options pickerOptions + resolved := make(map[string]string, len(placeholders)) + for _, ph := range placeholders { + if id := mapping[ph]; id != "" { + resolved[ph] = id + continue + } + + if !canPrompt(cmd) { + return nil, fmt.Errorf( + "cannot resolve connection %s: pass --connection '%s=' or run without --no-input", + ph, ph, + ) + } + + if options == nil { + opts, err := c.vaultConnectionPickerOptions(cmd.Context()) + if err != nil { + return nil, err + } + options = opts + } + + var label string + message := fmt.Sprintf("Select the vault connection for %s (%s):", ph, env.Connections[ph].Name) + if err := prompt.AskOne( + prompt.SelectInput("connection", message, "", options.labels(), options.defaultLabel(), true), + &label, + ); err != nil { + return nil, err + } + resolved[ph] = options.getValue(label) + } + + return resolved, nil +} + +// resolveFormEnvelope turns a Dashboard-style envelope into a flat form body +// ready for create/update: it maps connection placeholders to existing vault +// connections, creates the bundled flows (substituting the resolved connection +// IDs into them), and swaps the form's #FLOW-N# and #CONN-N# references for the +// new flow IDs and resolved connection IDs. +func (c *cli) resolveFormEnvelope( + cmd *cobra.Command, + body []byte, + mapping map[string]string, +) (json.RawMessage, error) { + var env formEnvelope + if err := json.Unmarshal(body, &env); err != nil { + return nil, fmt.Errorf("failed to parse form body: %w", err) + } + if len(env.Form) == 0 { + return nil, errors.New("the imported envelope has no \"form\" object") + } + + connReplacements, err := c.resolveConnectionPlaceholders(cmd, &env, mapping) + if err != nil { + return nil, err + } + + // Create flows in placeholder order for a deterministic sequence. + placeholders := make([]string, 0, len(env.Flows)) + for ph := range env.Flows { + placeholders = append(placeholders, ph) + } + sort.Strings(placeholders) + + flowReplacements := make(map[string]string, len(placeholders)) + for _, ph := range placeholders { + flowRaw, err := substituteIDs(env.Flows[ph], connReplacements) + if err != nil { + return nil, err + } + + flow := &management.Flow{} + if err := json.Unmarshal(flowRaw, flow); err != nil { + return nil, fmt.Errorf("failed to parse flow %s: %w", ph, err) + } + if err := ansi.Waiting(func() error { + return c.api.Flow.Create(cmd.Context(), flow) + }); err != nil { + return nil, fmt.Errorf("failed to create flow %s: %w", ph, err) + } + flowReplacements[ph] = flow.GetID() + } + + formBody, err := substituteIDs(env.Form, connReplacements) + if err != nil { + return nil, err + } + return substituteIDs(formBody, flowReplacements) +} + +// buildFormEnvelope turns a fetched form (raw wire JSON) into a Dashboard-style +// envelope: it reads every flow the form's FLOW nodes reference and every vault +// connection those flows reference, then swaps the real IDs for #FLOW-N#/#CONN-N# +// placeholders so the export is portable across tenants. The form is handled as +// raw JSON so STEP/ROUTER node config survives the round-trip. +func (c *cli) buildFormEnvelope( + ctx context.Context, + formRaw json.RawMessage, +) (*formEnvelope, error) { + var formMap map[string]interface{} + if err := json.Unmarshal(formRaw, &formMap); err != nil { + return nil, fmt.Errorf("failed to parse form: %w", err) + } + + // Referenced flow IDs, in node order, de-duplicated. + flowIDs := collectFlowIDs(formMap) + + // Read each flow and gather the connections its actions reference. + flowsByID := make(map[string]json.RawMessage, len(flowIDs)) + connSet := map[string]bool{} + for _, id := range flowIDs { + var flow *management.Flow + if err := ansi.Waiting(func() (err error) { + flow, err = c.api.Flow.Read(ctx, id) + return err + }); err != nil { + return nil, fmt.Errorf("failed to read flow with ID %q: %w", id, err) + } + + raw, err := json.Marshal(flow) + if err != nil { + return nil, fmt.Errorf("failed to marshal flow with ID %q: %w", id, err) + } + flowsByID[id] = raw + + connIDs, err := collectConnectionIDs(raw) + if err != nil { + return nil, err + } + for _, cid := range connIDs { + connSet[cid] = true + } + } + + connIDs := make([]string, 0, len(connSet)) + for id := range connSet { + connIDs = append(connIDs, id) + } + sort.Strings(connIDs) + + // Assign placeholders and build the real-ID -> placeholder replacement map. + replacements := make(map[string]string, len(flowIDs)+len(connIDs)) + flowPlaceholder := make(map[string]string, len(flowIDs)) + for i, id := range flowIDs { + ph := fmt.Sprintf("#FLOW-%d#", i+1) + replacements[id] = ph + flowPlaceholder[id] = ph + } + connPlaceholder := make(map[string]string, len(connIDs)) + for i, id := range connIDs { + ph := fmt.Sprintf("#CONN-%d#", i+1) + replacements[id] = ph + connPlaceholder[id] = ph + } + + // Drop volatile fields and swap in placeholders. + for _, field := range formServerManagedFields { + delete(formMap, field) + } + formBody, err := json.Marshal(formMap) + if err != nil { + return nil, err + } + formBody, err = substituteIDs(formBody, replacements) + if err != nil { + return nil, err + } + + env := &formEnvelope{Version: formEnvelopeVersion, Form: formBody} + + if len(flowsByID) > 0 { + env.Flows = make(map[string]json.RawMessage, len(flowsByID)) + for id, raw := range flowsByID { + substituted, err := substituteIDs(raw, replacements) + if err != nil { + return nil, err + } + env.Flows[flowPlaceholder[id]] = substituted + } + } + + if len(connIDs) > 0 { + env.Connections = make(map[string]envelopeConn, len(connIDs)) + for _, id := range connIDs { + var conn *management.FlowVaultConnection + if err := ansi.Waiting(func() (err error) { + conn, err = c.api.FlowVaultConnection.GetConnection(ctx, id) + return err + }); err != nil { + return nil, fmt.Errorf("failed to read vault connection with ID %q: %w", id, err) + } + env.Connections[connPlaceholder[id]] = envelopeConn{ + ID: conn.GetID(), + AppID: conn.GetAppID(), + Name: conn.GetName(), + } + } + } + + return env, nil +} diff --git a/internal/cli/forms_envelope_test.go b/internal/cli/forms_envelope_test.go new file mode 100644 index 000000000..3327e474a --- /dev/null +++ b/internal/cli/forms_envelope_test.go @@ -0,0 +1,235 @@ +package cli + +import ( + "context" + "encoding/json" + "testing" + + "github.com/auth0/go-auth0/management" + "github.com/spf13/cobra" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" + + "github.com/auth0/auth0-cli/internal/auth0" + "github.com/auth0/auth0-cli/internal/auth0/mock" +) + +func TestIsFormEnvelope(t *testing.T) { + tests := []struct { + name string + body string + want bool + }{ + {name: "envelope with form object", body: `{"version":"4.0.0","form":{"name":"x"}}`, want: true}, + {name: "flat form graph", body: `{"name":"x","nodes":[]}`, want: false}, + {name: "form as non-object is still detected", body: `{"form":{}}`, want: true}, + {name: "invalid json", body: `not-json`, want: false}, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.want, isFormEnvelope([]byte(test.body))) + }) + } +} + +func TestSubstituteIDs(t *testing.T) { + t.Run("replaces exact string matches anywhere in the tree", func(t *testing.T) { + in := json.RawMessage(`{"flow_id":"fl_1","nested":{"connection_id":"ac_1","keep":"fl_1x"},"list":["fl_1","other"]}`) + out, err := substituteIDs(in, map[string]string{"fl_1": "#FLOW-1#", "ac_1": "#CONN-1#"}) + require.NoError(t, err) + + var got map[string]interface{} + require.NoError(t, json.Unmarshal(out, &got)) + assert.Equal(t, "#FLOW-1#", got["flow_id"]) + nested := got["nested"].(map[string]interface{}) + assert.Equal(t, "#CONN-1#", nested["connection_id"]) + assert.Equal(t, "fl_1x", nested["keep"]) // Substring must not be replaced. + list := got["list"].([]interface{}) + assert.Equal(t, "#FLOW-1#", list[0]) + assert.Equal(t, "other", list[1]) + }) + + t.Run("returns the input unchanged when there are no replacements", func(t *testing.T) { + in := json.RawMessage(`{"a":"b"}`) + out, err := substituteIDs(in, nil) + require.NoError(t, err) + assert.Equal(t, in, out) + }) +} + +func TestCollectConnectionIDs(t *testing.T) { + raw := json.RawMessage(`{ + "name": "flow", + "actions": [ + {"params": {"connection_id": "ac_2"}}, + {"params": {"connection_id": "ac_1"}}, + {"params": {"connection_id": "ac_1"}}, + {"params": {"other": "x"}} + ] + }`) + + got, err := collectConnectionIDs(raw) + require.NoError(t, err) + assert.Equal(t, []string{"ac_1", "ac_2"}, got) // De-duplicated and sorted. +} + +func TestBuildFormEnvelope(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + form := json.RawMessage(`{ + "id": "ap_form1", + "name": "Test Form", + "nodes": [ + {"id": "step_1", "type": "STEP", "config": {"next_node": "flow_1", "components": [{"id": "job_title", "type": "TEXT", "category": "FIELD"}]}}, + {"id": "flow_1", "type": "FLOW", "config": {"flow_id": "fl_real", "next_node": "$ending"}} + ], + "start": {"next_node": "step_1"}, + "ending": {} + }`) + + flowMock := mock.NewMockFlowAPI(ctrl) + flowMock.EXPECT().Read(gomock.Any(), "fl_real").Return(&management.Flow{ + Name: auth0.String("My Flow"), + Actions: []interface{}{ + map[string]interface{}{ + "type": "AUTH0", + "params": map[string]interface{}{"connection_id": "ac_real"}, + }, + }, + }, nil) + + connMock := mock.NewMockFlowVaultConnectionAPI(ctrl) + connMock.EXPECT().GetConnection(gomock.Any(), "ac_real").Return(&management.FlowVaultConnection{ + ID: auth0.String("ac_real"), + AppID: auth0.String("AUTH0"), + Name: auth0.String("My Connection"), + }, nil) + + cli := &cli{api: &auth0.API{Flow: flowMock, FlowVaultConnection: connMock}} + + env, err := cli.buildFormEnvelope(context.Background(), form) + require.NoError(t, err) + + assert.Equal(t, formEnvelopeVersion, env.Version) + + // Connection descriptor keeps the real values under the placeholder key. + require.Contains(t, env.Connections, "#CONN-1#") + assert.Equal(t, "ac_real", env.Connections["#CONN-1#"].ID) + assert.Equal(t, "AUTH0", env.Connections["#CONN-1#"].AppID) + assert.Equal(t, "My Connection", env.Connections["#CONN-1#"].Name) + + // The flow node's flow_id is replaced with the placeholder, and volatile + // fields are dropped from the form block. + var formMap map[string]interface{} + require.NoError(t, json.Unmarshal(env.Form, &formMap)) + assert.NotContains(t, formMap, "id") + nodes := formMap["nodes"].([]interface{}) + flowNode := nodes[1].(map[string]interface{}) + flowConfig := flowNode["config"].(map[string]interface{}) + assert.Equal(t, "#FLOW-1#", flowConfig["flow_id"]) + + // STEP node config (components) is preserved, not dropped by the SDK's union. + stepNode := nodes[0].(map[string]interface{}) + stepConfig := stepNode["config"].(map[string]interface{}) + components := stepConfig["components"].([]interface{}) + require.Len(t, components, 1) + assert.Equal(t, "job_title", components[0].(map[string]interface{})["id"]) + + // The flow's connection_id is replaced with the placeholder. + require.Contains(t, env.Flows, "#FLOW-1#") + var flowMap map[string]interface{} + require.NoError(t, json.Unmarshal(env.Flows["#FLOW-1#"], &flowMap)) + action := flowMap["actions"].([]interface{})[0].(map[string]interface{}) + params := action["params"].(map[string]interface{}) + assert.Equal(t, "#CONN-1#", params["connection_id"]) +} + +func TestResolveFormEnvelope(t *testing.T) { + envelope := []byte(`{ + "version": "4.0.0", + "form": { + "name": "Test Form", + "nodes": [ + {"id": "flow_1", "type": "FLOW", "config": {"flow_id": "#FLOW-1#"}} + ] + }, + "flows": { + "#FLOW-1#": { + "name": "My Flow", + "actions": [{"params": {"connection_id": "#CONN-1#"}}] + } + }, + "connections": { + "#CONN-1#": {"id": "ac_placeholder", "app_id": "AUTH0", "name": "REPLACE_WITH_M2M_CONNECTION"} + } + }`) + + t.Run("maps connections, creates flows, and substitutes flow IDs", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + flowMock := mock.NewMockFlowAPI(ctrl) + flowMock.EXPECT().Create(gomock.Any(), gomock.Any()).DoAndReturn( + func(_ context.Context, r *management.Flow, _ ...management.RequestOption) error { + // The connection placeholder is resolved before the flow is created. + action := r.Actions[0].(map[string]interface{}) + params := action["params"].(map[string]interface{}) + assert.Equal(t, "ac_mapped", params["connection_id"]) + r.ID = auth0.String("fl_created") + return nil + }) + + cli := &cli{api: &auth0.API{Flow: flowMock}} + + body, err := cli.resolveFormEnvelope(&cobra.Command{}, envelope, map[string]string{"#CONN-1#": "ac_mapped"}) + require.NoError(t, err) + + var formMap map[string]interface{} + require.NoError(t, json.Unmarshal(body, &formMap)) + node := formMap["nodes"].([]interface{})[0].(map[string]interface{}) + config := node["config"].(map[string]interface{}) + assert.Equal(t, "fl_created", config["flow_id"]) + }) + + t.Run("resolves connection placeholders in the form body", func(t *testing.T) { + envelopeWithConnInForm := []byte(`{ + "version": "4.0.0", + "form": { + "name": "Test Form", + "nodes": [{"config": {"connection_id": "#CONN-1#"}}] + }, + "flows": {}, + "connections": { + "#CONN-1#": {"id": "ac_placeholder", "app_id": "AUTH0", "name": "My Connection"} + } + }`) + + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + flowMock := mock.NewMockFlowAPI(ctrl) + cli := &cli{api: &auth0.API{Flow: flowMock}} + + body, err := cli.resolveFormEnvelope(&cobra.Command{}, envelopeWithConnInForm, map[string]string{"#CONN-1#": "ac_resolved"}) + require.NoError(t, err) + + var formMap map[string]interface{} + require.NoError(t, json.Unmarshal(body, &formMap)) + node := formMap["nodes"].([]interface{})[0].(map[string]interface{}) + config := node["config"].(map[string]interface{}) + assert.Equal(t, "ac_resolved", config["connection_id"]) + }) + + t.Run("errors when a connection cannot be resolved without a terminal", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + cli := &cli{api: &auth0.API{Flow: mock.NewMockFlowAPI(ctrl)}} + + _, err := cli.resolveFormEnvelope(&cobra.Command{}, envelope, nil) + assert.ErrorContains(t, err, "cannot resolve connection #CONN-1#") + }) +} diff --git a/internal/cli/forms_test.go b/internal/cli/forms_test.go new file mode 100644 index 000000000..5cdbe2462 --- /dev/null +++ b/internal/cli/forms_test.go @@ -0,0 +1,482 @@ +package cli + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "io" + "net/http" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/auth0/go-auth0/management" + managementv3 "github.com/auth0/go-auth0/v3/management" + "github.com/auth0/go-auth0/v3/management/core" + "github.com/spf13/cobra" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" + + "github.com/auth0/auth0-cli/internal/auth0" + "github.com/auth0/auth0-cli/internal/auth0/mock" + "github.com/auth0/auth0-cli/internal/display" + "github.com/auth0/auth0-cli/internal/iostream" +) + +func TestApplyRawFormOverrides(t *testing.T) { + body := json.RawMessage(`{ + "name":"Original", + "languages":{"primary":"en","default":"fr"}, + "start":{}, + "nodes":[ + {"id":"step_1","type":"STEP","config":{"components":[{"id":"field_1","category":"FIELD","type":"TEXT"}]}}, + {"id":"router_1","type":"ROUTER","config":{"rules":[{"id":"rule_1","condition":{"operator":"AND"}}]}} + ], + "ending":null + }`) + + got, err := applyRawFormOverrides(body, "Renamed", "de", "") + require.NoError(t, err) + + var form map[string]json.RawMessage + require.NoError(t, json.Unmarshal(got, &form)) + + assert.JSONEq(t, `"Renamed"`, string(form["name"])) + assert.JSONEq(t, `{"primary":"de","default":"fr"}`, string(form["languages"])) + assert.JSONEq(t, `{}`, string(form["start"])) + assert.JSONEq(t, `null`, string(form["ending"])) + assert.Contains(t, string(form["nodes"]), `"components"`) + assert.Contains(t, string(form["nodes"]), `"condition"`) +} + +func TestApplyRawFormOverridesRejectsNonObject(t *testing.T) { + _, err := applyRawFormOverrides(json.RawMessage(`[]`), "", "", "") + assert.ErrorContains(t, err, "cannot unmarshal array") +} + +func TestCreateFormCmdUsesRawClientForSimpleScaffold(t *testing.T) { + httpClient := &formHTTPClientStub{ + response: json.RawMessage(`{"id":"ap_simple","name":"Simple Form","start":{},"nodes":[],"ending":{}}`), + } + stdout := &bytes.Buffer{} + c := &cli{ + api: &auth0.API{HTTPClient: httpClient}, + renderer: &display.Renderer{ + MessageWriter: io.Discard, + ResultWriter: stdout, + }, + } + + cmd := createFormCmd(c) + cmd.SetArgs([]string{"--name", "Simple Form"}) + + require.NoError(t, cmd.Execute()) + assert.Equal(t, http.MethodPost, httpClient.method) + require.IsType(t, json.RawMessage{}, httpClient.payload) + assert.JSONEq(t, `{"name":"Simple Form","messages":{},"languages":{},"translations":{},"nodes":[],"start":{},"ending":{},"style":{}}`, string(httpClient.payload.(json.RawMessage))) + assert.Contains(t, stdout.String(), "Simple Form") +} + +func TestFormRawCreatePreservesNodeConfig(t *testing.T) { + body := json.RawMessage(`{ + "name":"Rich Form", + "nodes":[{"id":"step_1","type":"STEP","config":{"components":[{"id":"field_1","category":"FIELD","type":"TEXT"}]}}] + }`) + + httpClient := &formHTTPClientStub{ + response: json.RawMessage(`{ + "id":"ap_rich", + "name":"Rich Form", + "nodes":[{"id":"step_1","type":"STEP","config":{"components":[{"id":"field_1","category":"FIELD","type":"TEXT"}]}}] + }`), + } + c := &cli{api: &auth0.API{HTTPClient: httpClient}} + + created, err := c.formRawCreate(context.Background(), body) + require.NoError(t, err) + + assert.Equal(t, http.MethodPost, httpClient.method) + require.IsType(t, json.RawMessage{}, httpClient.payload) + // The body is sent verbatim, so STEP node config the v3 union types would + // drop survives the round-trip. + assert.Contains(t, string(httpClient.payload.(json.RawMessage)), `"components"`) + assert.Contains(t, string(created), `"components"`) +} + +func TestShowFormCmdUsesRawClient(t *testing.T) { + httpClient := &formHTTPClientStub{ + response: json.RawMessage(`{ + "id":"ap_rich", + "name":"Rich Form", + "flow_count":2, + "links":{"self":"https://example.test/forms/ap_rich"}, + "nodes":[{"id":"router_1","type":"ROUTER","config":{"rules":[{"id":"rule_1","condition":{"operator":"AND"}}]}}] + }`), + } + stdout := &bytes.Buffer{} + c := &cli{ + api: &auth0.API{HTTPClient: httpClient}, + renderer: &display.Renderer{ + MessageWriter: io.Discard, + ResultWriter: stdout, + }, + } + + cmd := showFormCmd(c) + cmd.SetArgs([]string{"ap_rich"}) + + require.NoError(t, cmd.Execute()) + assert.Equal(t, http.MethodGet, httpClient.method) + assert.Contains(t, stdout.String(), "1 nodes") +} + +func TestUpdateFormCmdUsesRawClientForScalarUpdate(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + formAPI := mock.NewMockFormAPIV3(ctrl) + formAPI.EXPECT(). + Get(gomock.Any(), "ap_simple", gomock.Any()). + Return(&managementv3.GetFormResponseContent{ + ID: "ap_simple", + Name: "Original", + Languages: &managementv3.FormLanguages{ + Primary: auth0.String("en"), + Default: auth0.String("fr"), + }, + }, nil) + httpClient := &formHTTPClientStub{ + response: json.RawMessage(`{"id":"ap_simple","name":"Renamed","languages":{"primary":"de","default":"fr"}}`), + } + + stdout := &bytes.Buffer{} + c := &cli{ + api: &auth0.API{HTTPClient: httpClient}, + apiv3: &auth0.APIV3{Form: formAPI}, + renderer: &display.Renderer{ + MessageWriter: io.Discard, + ResultWriter: stdout, + }, + } + + cmd := updateFormCmd(c) + cmd.SetArgs([]string{"ap_simple", "--name", "Renamed", "--language-primary", "de"}) + + require.NoError(t, cmd.Execute()) + assert.Equal(t, http.MethodPatch, httpClient.method) + require.IsType(t, json.RawMessage{}, httpClient.payload) + assert.JSONEq(t, `{"name":"Renamed","languages":{"primary":"de","default":"fr"}}`, string(httpClient.payload.(json.RawMessage))) + assert.Contains(t, stdout.String(), "Renamed") +} + +func TestFormRawUpdatePreservesNodeConfigAndStripsServerManagedFields(t *testing.T) { + body := json.RawMessage(`{ + "id":"ap_rich", + "name":"Rich Form", + "nodes":[{"id":"router_1","type":"ROUTER","config":{"rules":[{"id":"rule_1","condition":{"operator":"AND"}}]}}], + "ending":null, + "created_at":"2026-08-24T00:00:00Z", + "updated_at":"2026-08-24T00:00:00Z", + "flow_count":0, + "links":{} + }`) + + httpClient := &formHTTPClientStub{ + response: json.RawMessage(`{ + "id":"ap_rich", + "name":"Rich Form", + "nodes":[{"id":"router_1","type":"ROUTER","config":{"rules":[{"id":"rule_1","condition":{"operator":"AND"}}]}}], + "ending":null + }`), + } + c := &cli{api: &auth0.API{HTTPClient: httpClient}} + + _, err := c.formRawUpdate(context.Background(), "ap_rich", body) + require.NoError(t, err) + + assert.Equal(t, http.MethodPatch, httpClient.method) + require.IsType(t, json.RawMessage{}, httpClient.payload) + payload := httpClient.payload.(json.RawMessage) + // Rich ROUTER config and an explicit null ending survive the raw round-trip. + assert.Contains(t, string(payload), `"condition"`) + assert.Contains(t, string(payload), `"ending":null`) + // Server-managed fields are stripped before the request is sent. + var form map[string]json.RawMessage + require.NoError(t, json.Unmarshal(payload, &form)) + assert.NotContains(t, form, "id") + assert.NotContains(t, form, "created_at") + assert.NotContains(t, form, "updated_at") + assert.NotContains(t, form, "flow_count") + assert.NotContains(t, form, "links") +} + +func TestReadFormData(t *testing.T) { + newCmd := func() *cobra.Command { + cmd := &cobra.Command{} + var data string + dataFlag.RegisterString(cmd, &data, "") + return cmd + } + + t.Run("reads inline JSON from --data", func(t *testing.T) { + cmd := newCmd() + require.NoError(t, cmd.Flags().Set("data", `{"name":"My Form"}`)) + + got, err := readFormData(cmd) + assert.NoError(t, err) + assert.Equal(t, []byte(`{"name":"My Form"}`), got) + }) + + t.Run("reads from an @file reference", func(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, "form.json") + want := []byte(`{"name":"My Form"}`) + assert.NoError(t, os.WriteFile(path, want, 0600)) + + cmd := newCmd() + require.NoError(t, cmd.Flags().Set("data", "@"+path)) + + got, err := readFormData(cmd) + assert.NoError(t, err) + assert.Equal(t, want, got) + }) + + t.Run("errors on a missing @file", func(t *testing.T) { + cmd := newCmd() + require.NoError(t, cmd.Flags().Set("data", "@"+filepath.Join(t.TempDir(), "missing.json"))) + + _, err := readFormData(cmd) + assert.ErrorContains(t, err, "failed to read form file") + }) + + t.Run("reads from stdin when --data is not set", func(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, "stdin.json") + want := []byte(`{"name":"Piped Form"}`) + assert.NoError(t, os.WriteFile(path, want, 0600)) + + f, err := os.Open(path) + assert.NoError(t, err) + defer f.Close() + + original := iostream.Input + iostream.Input = f + defer func() { iostream.Input = original }() + + got, err := readFormData(newCmd()) + assert.NoError(t, err) + assert.Equal(t, want, got) + }) + + t.Run("returns nil when no source is available", func(t *testing.T) { + path := filepath.Join(t.TempDir(), "empty.json") + assert.NoError(t, os.WriteFile(path, nil, 0600)) + + f, err := os.Open(path) + assert.NoError(t, err) + defer f.Close() + + original := iostream.Input + iostream.Input = f + defer func() { iostream.Input = original }() + + got, err := readFormData(newCmd()) + assert.NoError(t, err) + assert.Nil(t, got) + }) +} + +func TestFormPickerOptions(t *testing.T) { + tests := []struct { + name string + forms []*managementv3.FormSummary + apiError error + assertOutput func(t testing.TB, options pickerOptions) + assertError func(t testing.TB, err error) + }{ + { + name: "happy path", + forms: []*managementv3.FormSummary{ + {ID: "some-id-1", Name: "some-name-1"}, + {ID: "some-id-2", Name: "some-name-2"}, + }, + assertOutput: func(t testing.TB, options pickerOptions) { + assert.Len(t, options, 2) + assert.Equal(t, "some-name-1 (some-id-1)", options[0].label) + assert.Equal(t, "some-id-1", options[0].value) + assert.Equal(t, "some-name-2 (some-id-2)", options[1].label) + assert.Equal(t, "some-id-2", options[1].value) + }, + assertError: func(t testing.TB, err error) { + t.Fail() + }, + }, + { + name: "no forms", + forms: []*managementv3.FormSummary{}, + assertOutput: func(t testing.TB, options pickerOptions) { + t.Fail() + }, + assertError: func(t testing.TB, err error) { + assert.ErrorContains(t, err, "there are currently no forms to choose from. Create one by running: `auth0 forms create`") + }, + }, + { + name: "API error", + apiError: errors.New("error"), + assertOutput: func(t testing.TB, options pickerOptions) { + t.Fail() + }, + assertError: func(t testing.TB, err error) { + assert.Error(t, err) + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + formAPI := mock.NewMockFormAPIV3(ctrl) + if test.apiError != nil { + formAPI.EXPECT().List(gomock.Any(), gomock.Any()).Return(nil, test.apiError) + } else { + formAPI.EXPECT().List(gomock.Any(), gomock.Any()).Return( + &auth0.FormSummaryPage{ + Results: test.forms, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + return nil, core.ErrNoPages + }, + }, nil) + } + + cli := &cli{ + apiv3: &auth0.APIV3{Form: formAPI}, + } + + options, err := cli.formPickerOptions(context.Background()) + + if err != nil { + test.assertError(t, err) + } else { + test.assertOutput(t, options) + } + }) + } +} + +func TestCollectForms(t *testing.T) { + t.Run("pages across responses until exhausted", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + secondPage := &auth0.FormSummaryPage{ + Results: []*managementv3.FormSummary{{ID: "id-3", Name: "Form 3"}}, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + return nil, core.ErrNoPages + }, + } + firstPage := &auth0.FormSummaryPage{ + Results: []*managementv3.FormSummary{ + {ID: "id-1", Name: "Form 1"}, + {ID: "id-2", Name: "Form 2"}, + }, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + return secondPage, nil + }, + } + + formAPI := mock.NewMockFormAPIV3(ctrl) + formAPI.EXPECT().List(gomock.Any(), gomock.Any()).Return(firstPage, nil) + + cli := &cli{apiv3: &auth0.APIV3{Form: formAPI}} + + forms, err := collectForms(context.Background(), cli, &managementv3.ListFormsRequestParameters{}, 0) + assert.NoError(t, err) + assert.Len(t, forms, 3) + assert.Equal(t, "id-3", forms[2].GetID()) + }) + + t.Run("stops at the requested limit without paging further", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + firstPage := &auth0.FormSummaryPage{ + Results: []*managementv3.FormSummary{ + {ID: "id-1", Name: "Form 1"}, + {ID: "id-2", Name: "Form 2"}, + }, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + t.Fatal("should not page past the limit") + return nil, nil + }, + } + + formAPI := mock.NewMockFormAPIV3(ctrl) + formAPI.EXPECT().List(gomock.Any(), gomock.Any()).Return(firstPage, nil) + + cli := &cli{apiv3: &auth0.APIV3{Form: formAPI}} + + forms, err := collectForms(context.Background(), cli, &managementv3.ListFormsRequestParameters{}, 1) + assert.NoError(t, err) + assert.Len(t, forms, 1) + assert.Equal(t, "id-1", forms[0].GetID()) + }) + + t.Run("returns the list error", func(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + formAPI := mock.NewMockFormAPIV3(ctrl) + formAPI.EXPECT().List(gomock.Any(), gomock.Any()).Return(nil, errors.New("boom")) + + cli := &cli{apiv3: &auth0.APIV3{Form: formAPI}} + + _, err := collectForms(context.Background(), cli, &managementv3.ListFormsRequestParameters{}, 0) + assert.EqualError(t, err, "boom") + }) +} + +type formHTTPClientStub struct { + method string + payload interface{} + response json.RawMessage +} + +func (s *formHTTPClientStub) NewRequest( + ctx context.Context, + method string, + uri string, + payload interface{}, + _ ...management.RequestOption, +) (*http.Request, error) { + s.method = method + s.payload = payload + return http.NewRequestWithContext(ctx, method, uri, nil) +} + +func (s *formHTTPClientStub) Do(_ *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Header: make(http.Header), + Body: io.NopCloser(strings.NewReader(string(s.response))), + }, nil +} + +func (s *formHTTPClientStub) Request( + context.Context, + string, + string, + interface{}, + ...management.RequestOption, +) error { + return nil +} + +func (s *formHTTPClientStub) URI(path ...string) string { + return "https://example.test/api/v2/" + strings.Join(path, "/") +} diff --git a/internal/cli/root.go b/internal/cli/root.go index 9e472aac6..1910da6b2 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -300,6 +300,7 @@ func addSubCommands(rootCmd *cobra.Command, cli *cli) { rootCmd.AddCommand(apiCmd(cli)) rootCmd.AddCommand(terraformCmd(cli)) rootCmd.AddCommand(eventStreamsCmd(cli)) + rootCmd.AddCommand(formsCmd(cli)) rootCmd.AddCommand(flowsCmd(cli)) rootCmd.AddCommand(networkACLCmd(cli)) rootCmd.AddCommand(tenantSettingsCmd(cli)) diff --git a/internal/cli/terraform.go b/internal/cli/terraform.go index a73e1ebcb..ee87a2244 100644 --- a/internal/cli/terraform.go +++ b/internal/cli/terraform.go @@ -98,7 +98,7 @@ func (i *terraformInputs) parseResourceFetchers(api *auth0.API, apiv3 *auth0.API case "auth0_flow_vault_connection": fetchers = append(fetchers, &flowVaultConnectionResourceFetcher{api}) case "auth0_form": - fetchers = append(fetchers, &formResourceFetcher{api}) + fetchers = append(fetchers, &formResourceFetcher{apiv3}) case "auth0_guardian": fetchers = append(fetchers, &guardianResourceFetcher{}) case "auth0_log_stream": diff --git a/internal/cli/terraform_fetcher.go b/internal/cli/terraform_fetcher.go index 5eaf52815..1fdd18851 100644 --- a/internal/cli/terraform_fetcher.go +++ b/internal/cli/terraform_fetcher.go @@ -2,11 +2,13 @@ package cli import ( "context" + "errors" "net/http" "strings" "github.com/auth0/go-auth0/management" managementv3 "github.com/auth0/go-auth0/v3/management" + "github.com/auth0/go-auth0/v3/management/core" "github.com/google/uuid" "github.com/auth0/auth0-cli/internal/auth0" @@ -86,7 +88,7 @@ type ( } formResourceFetcher struct { - api *auth0.API + apiv3 *auth0.APIV3 } guardianResourceFetcher struct{} @@ -436,16 +438,26 @@ func (f *flowVaultConnectionResourceFetcher) FetchData(ctx context.Context) (imp func (f *formResourceFetcher) FetchData(ctx context.Context) (importDataList, error) { var data importDataList - forms, err := f.api.Form.List(ctx) + page, err := f.apiv3.Form.List(ctx, &managementv3.ListFormsRequestParameters{}) if err != nil { return data, err } - for _, form := range forms.Forms { - data = append(data, importDataItem{ - ResourceName: "auth0_form." + sanitizeResourceName(form.GetName()), - ImportID: form.GetID(), - }) + for page != nil { + for _, form := range page.Results { + data = append(data, importDataItem{ + ResourceName: "auth0_form." + sanitizeResourceName(form.GetName()), + ImportID: form.GetID(), + }) + } + + page, err = page.GetNextPage(ctx) + if errors.Is(err, core.ErrNoPages) { + break + } + if err != nil { + return data, err + } } return data, nil diff --git a/internal/cli/terraform_fetcher_test.go b/internal/cli/terraform_fetcher_test.go index 686116640..738d3e25e 100644 --- a/internal/cli/terraform_fetcher_test.go +++ b/internal/cli/terraform_fetcher_test.go @@ -1076,29 +1076,27 @@ func TestFormResourceFetcher_FetchData(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - formAPI := mock.NewMockFormAPI(ctrl) + formAPI := mock.NewMockFormAPIV3(ctrl) formAPI.EXPECT(). List(gomock.Any(), gomock.Any()).Return( - &management.FormList{ - List: management.List{ - Start: 0, - Limit: 1, - Total: 2, - }, - Forms: []*management.Form{ + &auth0.FormSummaryPage{ + Results: []*managementv3.FormSummary{ { - ID: auth0.String("form_id1"), - Name: auth0.String("Form 1"), + ID: "form_id1", + Name: "Form 1", }, { - ID: auth0.String("form_id2"), - Name: auth0.String("Form 2"), + ID: "form_id2", + Name: "Form 2", }, }, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + return nil, core.ErrNoPages + }, }, nil) fetcher := formResourceFetcher{ - api: &auth0.API{ + apiv3: &auth0.APIV3{ Form: formAPI, }, } @@ -1123,20 +1121,18 @@ func TestFormResourceFetcher_FetchData(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - formAPI := mock.NewMockFormAPI(ctrl) + formAPI := mock.NewMockFormAPIV3(ctrl) formAPI.EXPECT(). List(gomock.Any(), gomock.Any()).Return( - &management.FormList{ - List: management.List{ - Start: 0, - Limit: 0, - Total: 0, + &auth0.FormSummaryPage{ + Results: []*managementv3.FormSummary{}, + NextPageFunc: func(_ context.Context) (*auth0.FormSummaryPage, error) { + return nil, core.ErrNoPages }, - Forms: []*management.Form{}, }, nil) fetcher := formResourceFetcher{ - api: &auth0.API{ + apiv3: &auth0.APIV3{ Form: formAPI, }, } @@ -1150,13 +1146,13 @@ func TestFormResourceFetcher_FetchData(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - formAPI := mock.NewMockFormAPI(ctrl) + formAPI := mock.NewMockFormAPIV3(ctrl) formAPI.EXPECT(). List(gomock.Any(), gomock.Any()). Return(nil, fmt.Errorf("failed to read form")) fetcher := formResourceFetcher{ - api: &auth0.API{ + apiv3: &auth0.APIV3{ Form: formAPI, }, } diff --git a/internal/display/forms.go b/internal/display/forms.go new file mode 100644 index 000000000..bfc972ff3 --- /dev/null +++ b/internal/display/forms.go @@ -0,0 +1,198 @@ +package display + +import ( + "encoding/json" + "fmt" + "strings" + "time" + + managementv3 "github.com/auth0/go-auth0/v3/management" + + "github.com/auth0/auth0-cli/internal/ansi" +) + +type formView struct { + ID string + Name string + LanguagePrimary string + LanguageDefault string + NodeCount int + TranslationLang int + HasStyle bool + CreatedAt string + UpdatedAt string + SubmittedAt string + + raw interface{} +} + +func (v *formView) AsTableHeader() []string { + return []string{"ID", "Name", "Submitted", "Updated"} +} + +func (v *formView) AsTableRow() []string { + return []string{ansi.Faint(v.ID), v.Name, v.SubmittedAt, v.UpdatedAt} +} + +func (v *formView) KeyValues() [][]string { + kvs := [][]string{ + {"ID", ansi.Faint(v.ID)}, + {"NAME", v.Name}, + {"LANGUAGES", formLanguageSummary(v.LanguagePrimary, v.LanguageDefault)}, + {"NODES", fmt.Sprintf("%d nodes", v.NodeCount)}, + {"TRANSLATIONS", fmt.Sprintf("%d languages", v.TranslationLang)}, + {"STYLE", boolToPresence(v.HasStyle)}, + } + + kvs = append(kvs, + []string{"CREATED AT", v.CreatedAt}, + []string{"UPDATED AT", v.UpdatedAt}, + ) + + if v.SubmittedAt != "" { + kvs = append(kvs, []string{"SUBMITTED AT", v.SubmittedAt}) + } + + return kvs +} + +func (v *formView) Object() interface{} { + return v.raw +} + +// formSummaryView renders a single row in the forms list. +type formSummaryView struct { + ID string + Name string + SubmittedAt string + UpdatedAt string + + raw interface{} +} + +func (v *formSummaryView) AsTableHeader() []string { + return []string{"ID", "Name", "Submitted", "Updated"} +} + +func (v *formSummaryView) AsTableRow() []string { + return []string{ansi.Faint(v.ID), v.Name, v.SubmittedAt, v.UpdatedAt} +} + +func (v *formSummaryView) Object() interface{} { + return v.raw +} + +// FormsList renders the list of forms. +func (r *Renderer) FormsList(forms []*managementv3.FormSummary) error { + resource := "forms" + + r.Heading(resource) + + if len(forms) == 0 { + r.EmptyState(resource, "Use 'auth0 forms create' to add one") + return nil + } + + var res []View + for _, f := range forms { + res = append(res, makeFormSummaryView(f)) + } + + r.Results(res) + + return nil +} + +// FormShowRaw renders a full-fidelity form response read through the v1 HTTP +// client, avoiding the v3 SDK's lossy form-node unions. +func (r *Renderer) FormShowRaw(form json.RawMessage) error { + return r.renderRawForm("form", form) +} + +// FormCreateRaw renders a full-fidelity create response. +func (r *Renderer) FormCreateRaw(form json.RawMessage) error { + return r.renderRawForm("form created", form) +} + +// FormUpdateRaw renders a full-fidelity update response. +func (r *Renderer) FormUpdateRaw(form json.RawMessage) error { + return r.renderRawForm("form updated", form) +} + +func (r *Renderer) renderRawForm(heading string, form json.RawMessage) error { + view, err := makeFormViewFromRaw(form) + if err != nil { + return fmt.Errorf("failed to parse form response: %w", err) + } + r.Heading(heading) + r.Result(view) + return nil +} + +func makeFormSummaryView(f *managementv3.FormSummary) *formSummaryView { + return &formSummaryView{ + ID: f.GetID(), + Name: f.GetName(), + SubmittedAt: f.GetSubmittedAt(), + UpdatedAt: timeAgo(f.GetUpdatedAt()), + raw: mergeExtraProperties(f, f.GetExtraProperties()), + } +} + +func makeFormViewFromRaw(raw json.RawMessage) (*formView, error) { + var form struct { + ID string `json:"id"` + Name string `json:"name"` + Languages struct { + Primary string `json:"primary"` + Default string `json:"default"` + } `json:"languages"` + Nodes []json.RawMessage `json:"nodes"` + Translations map[string]json.RawMessage `json:"translations"` + Style json.RawMessage `json:"style"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + SubmittedAt string `json:"submitted_at"` + } + if err := json.Unmarshal(raw, &form); err != nil { + return nil, err + } + + return &formView{ + ID: form.ID, + Name: form.Name, + LanguagePrimary: form.Languages.Primary, + LanguageDefault: form.Languages.Default, + NodeCount: len(form.Nodes), + TranslationLang: len(form.Translations), + HasStyle: rawJSONPresent(form.Style), + CreatedAt: rawTimeAgo(form.CreatedAt), + UpdatedAt: rawTimeAgo(form.UpdatedAt), + SubmittedAt: form.SubmittedAt, + raw: raw, + }, nil +} + +func rawJSONPresent(raw json.RawMessage) bool { + value := strings.TrimSpace(string(raw)) + return value != "" && value != "null" +} + +// FormExport writes a form body verbatim (uncolored) to the result writer so it +// stays pipe- and import-friendly. +func (r *Renderer) FormExport(body string) { + fmt.Fprintln(r.ResultWriter, body) +} + +func formLanguageSummary(primary, def string) string { + switch { + case primary == "" && def == "": + return "-" + case def == "": + return fmt.Sprintf("primary: %s", primary) + case primary == "": + return fmt.Sprintf("default: %s", def) + default: + return fmt.Sprintf("primary: %s, default: %s", primary, def) + } +} diff --git a/internal/display/forms_test.go b/internal/display/forms_test.go new file mode 100644 index 000000000..fa08d85c6 --- /dev/null +++ b/internal/display/forms_test.go @@ -0,0 +1,50 @@ +package display + +import ( + "bytes" + "encoding/json" + "io" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestFormShowRawPreservesRichGraphJSON(t *testing.T) { + stdout := &bytes.Buffer{} + renderer := &Renderer{ + MessageWriter: io.Discard, + ResultWriter: stdout, + Format: OutputFormatJSON, + } + body := json.RawMessage(`{ + "id":"ap_rich", + "name":"Rich Form", + "flow_count":2, + "links":{"self":"https://example.test/forms/ap_rich"}, + "nodes":[ + {"id":"step_1","type":"STEP","config":{"components":[{"id":"field_1","category":"FIELD","type":"TEXT"}]}}, + {"id":"router_1","type":"ROUTER","config":{"rules":[{"id":"rule_1","condition":{"operator":"AND"}}]}} + ] + }`) + + require.NoError(t, renderer.FormShowRaw(body)) + + var got map[string]interface{} + require.NoError(t, json.Unmarshal(stdout.Bytes(), &got)) + assert.Equal(t, float64(2), got["flow_count"]) + assert.Contains(t, got, "links") + + nodes := got["nodes"].([]interface{}) + step := nodes[0].(map[string]interface{}) + assert.Contains(t, step["config"].(map[string]interface{}), "components") + router := nodes[1].(map[string]interface{}) + rules := router["config"].(map[string]interface{})["rules"].([]interface{}) + assert.Contains(t, rules[0].(map[string]interface{}), "condition") +} + +func TestFormShowRawRejectsInvalidJSON(t *testing.T) { + renderer := &Renderer{MessageWriter: io.Discard, ResultWriter: io.Discard} + err := renderer.FormShowRaw(json.RawMessage(`not-json`)) + assert.ErrorContains(t, err, "failed to parse form response") +} diff --git a/test/integration/fixtures/update-form.json b/test/integration/fixtures/update-form.json new file mode 100644 index 000000000..008d6630c --- /dev/null +++ b/test/integration/fixtures/update-form.json @@ -0,0 +1,10 @@ +{ + "name": "integration-test-form-fixture-updated", + "languages": { + "primary": "en", + "default": "en" + }, + "start": {}, + "nodes": [], + "ending": {} +} diff --git a/test/integration/forms-test-cases.yaml b/test/integration/forms-test-cases.yaml new file mode 100644 index 000000000..50322678c --- /dev/null +++ b/test/integration/forms-test-cases.yaml @@ -0,0 +1,130 @@ +config: + inherit-env: true + retries: 1 + +tests: + 001 - it successfully lists all forms (json): + command: auth0 forms list --json + exit-code: 0 + + 002 - it successfully creates a form via --name: + command: auth0 forms create --name integration-test-form-created --no-input + exit-code: 0 + stdout: + contains: + - ID + - NAME + - integration-test-form-created + + 003 - it successfully creates a form and outputs in json: + command: auth0 forms create --name integration-test-form-json --no-input --json + exit-code: 0 + stdout: + json: + name: "integration-test-form-json" + + 004 - it successfully creates a form from the embedded example: + command: auth0 forms create --example | jq '.name="integration-test-form-example"' | auth0 forms create --no-input --json + exit-code: 0 + stdout: + json: + name: "integration-test-form-example" + languages.primary: "en" + languages.default: "en" + + 005 - it fails to create a form without a name: + command: echo '{"start":{},"nodes":[],"ending":{}}' | auth0 forms create --no-input + exit-code: 1 + stderr: + contains: + - must include + - name + + 006 - it fails to create a form from invalid json: + command: echo 'not-json' | auth0 forms create --no-input + exit-code: 1 + stderr: + contains: + - Invalid JSON + - JSON object + + 007 - it successfully lists all forms with data: + command: auth0 forms list + exit-code: 0 + stdout: + contains: + - ID + - NAME + - UPDATED + + 008 - given a test form, it successfully shows the form details: + command: auth0 forms show $(./test/integration/scripts/get-form-id.sh) + exit-code: 0 + stdout: + contains: + - ID + - NAME + - integration-test-form + + 009 - given a test form, it successfully shows the form details (json): + command: auth0 forms show $(./test/integration/scripts/get-form-id.sh) --json + exit-code: 0 + stdout: + json: + name: "integration-test-form" + + 010 - given a test form, it successfully updates the form name: + command: auth0 forms update $(./test/integration/scripts/get-form-id.sh) --name integration-test-form-updated --json + exit-code: 0 + stdout: + json: + name: "integration-test-form-updated" + + 011 - given a test form, it successfully updates the form from a fixture file: + command: auth0 forms update $(./test/integration/scripts/get-form-id.sh) --data @./test/integration/fixtures/update-form.json --json + exit-code: 0 + stdout: + json: + name: "integration-test-form-fixture-updated" + languages.primary: "en" + languages.default: "en" + + 012 - given a test form, it successfully exports the form as an envelope: + command: auth0 forms export $(./test/integration/scripts/get-form-id.sh) + exit-code: 0 + stdout: + contains: + - '"version"' + - '"form"' + - '"name"' + + 013 - given a test form, it successfully round-trips export to import: + command: auth0 forms export $(./test/integration/scripts/get-form-id.sh) | auth0 forms import --id $(./test/integration/scripts/get-form-id.sh) --json + exit-code: 0 + stdout: + json: + name: "integration-test-form-fixture-updated" + + 014 - given a test form, it prints the builder URL for open: + command: auth0 forms open $(./test/integration/scripts/get-form-id.sh) --no-input + exit-code: 0 + stderr: + contains: + - forms.auth0.com + - /edit + + 015 - agent mode refuses to delete a form without force: + command: AUTH0_AGENT_MODE=true auth0 forms delete $(./test/integration/scripts/get-form-id.sh) + exit-code: 1 + stderr: + contains: + - destructive command + - --force + + 016 - given a test form, it successfully deletes the form: + command: auth0 forms delete $(./test/integration/scripts/get-form-id.sh) --force + exit-code: 0 + + 017 - it cleans up all forms created by this suite: + command: ./test/integration/scripts/cleanup-forms.sh + exit-code: 0 diff --git a/test/integration/scripts/cleanup-forms.sh b/test/integration/scripts/cleanup-forms.sh new file mode 100755 index 000000000..ec2a4816c --- /dev/null +++ b/test/integration/scripts/cleanup-forms.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -euo pipefail + +ids=() +while IFS= read -r id; do + if [[ -n "$id" ]]; then + ids+=("$id") + fi +done < <(auth0 forms list --json --no-input | jq -r '.[] | select(.name | startswith("integration-test-")) | .id') + +if (( ${#ids[@]} > 0 )); then + auth0 forms delete --force "${ids[@]}" +fi + +rm -f ./test/integration/identifiers/form-id diff --git a/test/integration/scripts/get-form-id.sh b/test/integration/scripts/get-form-id.sh new file mode 100755 index 000000000..2a9f67960 --- /dev/null +++ b/test/integration/scripts/get-form-id.sh @@ -0,0 +1,13 @@ +#! /bin/bash + +FILE=./test/integration/identifiers/form-id +if [ -f "$FILE" ]; then + cat $FILE + exit 0 +fi + +form=$( auth0 forms create --name "integration-test-form" --json --no-input ) + +mkdir -p ./test/integration/identifiers +echo "$form" | jq -r '.["id"]' > $FILE +cat $FILE diff --git a/test/integration/scripts/test-cleanup.sh b/test/integration/scripts/test-cleanup.sh index 54400e09c..9c9d1afb9 100755 --- a/test/integration/scripts/test-cleanup.sh +++ b/test/integration/scripts/test-cleanup.sh @@ -32,6 +32,7 @@ delete_resources "actions" "integration-test-" "id" delete_resources "actions modules" "integration-test-module" "id" delete_resources "token-exchange" "integration-test-" "id" delete_resources "event-streams" "integration-test-" "id" +delete_resources "forms" "integration-test-" "id" delete_resources "flows vault connections" "integration-test-" "id" delete_resources "flows" "integration-test-" "id" delete_resources "logs streams" "integration-test-" "id" From 8688f909c973a54e86efc4100255f4daedf0aa17 Mon Sep 17 00:00:00 2001 From: ramya18101 Date: Wed, 9 Sep 2026 18:25:26 +0530 Subject: [PATCH 4/5] chore: update mockgen command to use 'go tool' for consistency --- Makefile | 3 - internal/auth/auth.go | 2 +- internal/auth0/action.go | 2 +- internal/auth0/action_module.go | 2 +- internal/auth0/branding.go | 2 +- internal/auth0/branding_prompt.go | 2 +- internal/auth0/branding_theme.go | 2 +- internal/auth0/client.go | 2 +- internal/auth0/client_grant.go | 2 +- internal/auth0/connection.go | 2 +- internal/auth0/custom_domain.go | 2 +- internal/auth0/email_provider.go | 2 +- internal/auth0/email_template.go | 2 +- internal/auth0/event_streams.go | 2 +- internal/auth0/flow.go | 2 +- internal/auth0/flow_v3.go | 2 +- internal/auth0/form.go | 2 +- internal/auth0/log.go | 2 +- internal/auth0/log_stream.go | 2 +- internal/auth0/mock/flow_v3_mock.go | 209 ++++++++++++++++++ internal/auth0/network_acl.go | 2 +- internal/auth0/organization.go | 2 +- internal/auth0/phone_notification_template.go | 2 +- internal/auth0/refresh_token.go | 2 +- internal/auth0/resource_server.go | 2 +- internal/auth0/role.go | 2 +- internal/auth0/rule.go | 2 +- internal/auth0/self_service_profiles.go | 2 +- internal/auth0/session.go | 2 +- internal/auth0/tenant.go | 2 +- internal/auth0/token_exchange.go | 2 +- internal/auth0/user.go | 2 +- internal/auth0/user_attribute_profiles.go | 2 +- 33 files changed, 240 insertions(+), 34 deletions(-) create mode 100644 internal/auth0/mock/flow_v3_mock.go diff --git a/Makefile b/Makefile index 63099efe2..f8e496f17 100644 --- a/Makefile +++ b/Makefile @@ -54,9 +54,6 @@ deps: ## Download dependencies ${call print, "Downloading dependencies"} @go mod vendor -v -$(GO_BIN)/mockgen: - ${call print, "Installing mockgen"} - @go install -v go.uber.org/mock/mockgen $(GO_BIN)/golangci-lint: ${call print, "Installing golangci-lint"} diff --git a/internal/auth/auth.go b/internal/auth/auth.go index 3aea29b83..6d7c3d460 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source auth.go -destination mock/auth.go -package mock +//go:generate go tool mockgen -source auth.go -destination mock/auth.go -package mock package auth import ( diff --git a/internal/auth0/action.go b/internal/auth0/action.go index 58ae3a5b9..e605afbba 100644 --- a/internal/auth0/action.go +++ b/internal/auth0/action.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=action.go -destination=mock/action_mock.go -package=mock +//go:generate go tool mockgen -source=action.go -destination=mock/action_mock.go -package=mock package auth0 diff --git a/internal/auth0/action_module.go b/internal/auth0/action_module.go index 843bfca4a..c237ec052 100644 --- a/internal/auth0/action_module.go +++ b/internal/auth0/action_module.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=action_module.go -destination=mock/action_module_mock.go -package=mock +//go:generate go tool mockgen -source=action_module.go -destination=mock/action_module_mock.go -package=mock package auth0 diff --git a/internal/auth0/branding.go b/internal/auth0/branding.go index 2fdd346c7..90afd6084 100644 --- a/internal/auth0/branding.go +++ b/internal/auth0/branding.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=branding.go -destination=mock/branding_mock.go -package=mock +//go:generate go tool mockgen -source=branding.go -destination=mock/branding_mock.go -package=mock package auth0 diff --git a/internal/auth0/branding_prompt.go b/internal/auth0/branding_prompt.go index dc424c52a..022fa0ca9 100644 --- a/internal/auth0/branding_prompt.go +++ b/internal/auth0/branding_prompt.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=branding_prompt.go -destination=mock/branding_prompt_mock.go -package=mock +//go:generate go tool mockgen -source=branding_prompt.go -destination=mock/branding_prompt_mock.go -package=mock package auth0 diff --git a/internal/auth0/branding_theme.go b/internal/auth0/branding_theme.go index d234e1e3a..263ffdf07 100644 --- a/internal/auth0/branding_theme.go +++ b/internal/auth0/branding_theme.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=branding_theme.go -destination=mock/branding_theme_mock.go -package=mock +//go:generate go tool mockgen -source=branding_theme.go -destination=mock/branding_theme_mock.go -package=mock package auth0 diff --git a/internal/auth0/client.go b/internal/auth0/client.go index bd8eafad8..7067f700c 100644 --- a/internal/auth0/client.go +++ b/internal/auth0/client.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=client.go -destination=mock/client_mock.go -package=mock +//go:generate go tool mockgen -source=client.go -destination=mock/client_mock.go -package=mock package auth0 diff --git a/internal/auth0/client_grant.go b/internal/auth0/client_grant.go index dc4b3ce00..e8fff91a5 100644 --- a/internal/auth0/client_grant.go +++ b/internal/auth0/client_grant.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=client_grant.go -destination=mock/client_grant_mock.go -package=mock +//go:generate go tool mockgen -source=client_grant.go -destination=mock/client_grant_mock.go -package=mock package auth0 diff --git a/internal/auth0/connection.go b/internal/auth0/connection.go index cecc24418..8dced6268 100644 --- a/internal/auth0/connection.go +++ b/internal/auth0/connection.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=connection.go -destination=mock/connection_mock.go -package=mock +//go:generate go tool mockgen -source=connection.go -destination=mock/connection_mock.go -package=mock package auth0 diff --git a/internal/auth0/custom_domain.go b/internal/auth0/custom_domain.go index 540a8318d..8e2b9326c 100644 --- a/internal/auth0/custom_domain.go +++ b/internal/auth0/custom_domain.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=custom_domain.go -destination=mock/custom_domain_mock.go -package=mock +//go:generate go tool mockgen -source=custom_domain.go -destination=mock/custom_domain_mock.go -package=mock package auth0 diff --git a/internal/auth0/email_provider.go b/internal/auth0/email_provider.go index 65b788b85..00f076a7d 100644 --- a/internal/auth0/email_provider.go +++ b/internal/auth0/email_provider.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=email_provider.go -destination=mock/email_provider_mock.go -package=mock +//go:generate go tool mockgen -source=email_provider.go -destination=mock/email_provider_mock.go -package=mock package auth0 diff --git a/internal/auth0/email_template.go b/internal/auth0/email_template.go index 1d250dea8..6b84ed4b9 100644 --- a/internal/auth0/email_template.go +++ b/internal/auth0/email_template.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=email_template.go -destination=mock/email_template_mock.go -package=mock +//go:generate go tool mockgen -source=email_template.go -destination=mock/email_template_mock.go -package=mock package auth0 diff --git a/internal/auth0/event_streams.go b/internal/auth0/event_streams.go index ef471ddba..ef378200e 100644 --- a/internal/auth0/event_streams.go +++ b/internal/auth0/event_streams.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=event_streams.go -destination=mock/event_streams_mock.go -package=mock +//go:generate go tool mockgen -source=event_streams.go -destination=mock/event_streams_mock.go -package=mock package auth0 diff --git a/internal/auth0/flow.go b/internal/auth0/flow.go index ead683485..422e3b545 100644 --- a/internal/auth0/flow.go +++ b/internal/auth0/flow.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=flow.go -destination=mock/flow_mock.go -package=mock +//go:generate go tool mockgen -source=flow.go -destination=mock/flow_mock.go -package=mock package auth0 diff --git a/internal/auth0/flow_v3.go b/internal/auth0/flow_v3.go index 053f6f012..bb0b5cf25 100644 --- a/internal/auth0/flow_v3.go +++ b/internal/auth0/flow_v3.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=flow_v3.go -destination=mock/flow_v3_mock.go -package=mock +//go:generate go tool mockgen -source=flow_v3.go -destination=mock/flow_v3_mock.go -package=mock package auth0 diff --git a/internal/auth0/form.go b/internal/auth0/form.go index f6dea7cf1..bb78c1030 100644 --- a/internal/auth0/form.go +++ b/internal/auth0/form.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=form.go -destination=mock/form_mock.go -package=mock +//go:generate go tool mockgen -source=form.go -destination=mock/form_mock.go -package=mock package auth0 diff --git a/internal/auth0/log.go b/internal/auth0/log.go index 6098e6926..f936655a6 100644 --- a/internal/auth0/log.go +++ b/internal/auth0/log.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=log.go -destination=mock/log_mock.go -package=mock +//go:generate go tool mockgen -source=log.go -destination=mock/log_mock.go -package=mock package auth0 diff --git a/internal/auth0/log_stream.go b/internal/auth0/log_stream.go index f69a7d23f..660977b58 100644 --- a/internal/auth0/log_stream.go +++ b/internal/auth0/log_stream.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=log_stream.go -destination=mock/log_stream_mock.go -package=mock +//go:generate go tool mockgen -source=log_stream.go -destination=mock/log_stream_mock.go -package=mock package auth0 diff --git a/internal/auth0/mock/flow_v3_mock.go b/internal/auth0/mock/flow_v3_mock.go new file mode 100644 index 000000000..328b7cfd6 --- /dev/null +++ b/internal/auth0/mock/flow_v3_mock.go @@ -0,0 +1,209 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: flow_v3.go +// +// Generated by this command: +// +// mockgen -source=flow_v3.go -destination=mock/flow_v3_mock.go -package=mock +// + +// Package mock is a generated GoMock package. +package mock + +import ( + context "context" + reflect "reflect" + + auth0 "github.com/auth0/auth0-cli/internal/auth0" + management "github.com/auth0/go-auth0/v3/management" + option "github.com/auth0/go-auth0/v3/management/option" + gomock "go.uber.org/mock/gomock" +) + +// MockFlowAPIV3 is a mock of FlowAPIV3 interface. +type MockFlowAPIV3 struct { + ctrl *gomock.Controller + recorder *MockFlowAPIV3MockRecorder + isgomock struct{} +} + +// MockFlowAPIV3MockRecorder is the mock recorder for MockFlowAPIV3. +type MockFlowAPIV3MockRecorder struct { + mock *MockFlowAPIV3 +} + +// NewMockFlowAPIV3 creates a new mock instance. +func NewMockFlowAPIV3(ctrl *gomock.Controller) *MockFlowAPIV3 { + mock := &MockFlowAPIV3{ctrl: ctrl} + mock.recorder = &MockFlowAPIV3MockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFlowAPIV3) EXPECT() *MockFlowAPIV3MockRecorder { + return m.recorder +} + +// Delete mocks base method. +func (m *MockFlowAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, id} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Delete", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Delete indicates an expected call of Delete. +func (mr *MockFlowAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, id}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFlowAPIV3)(nil).Delete), varargs...) +} + +// List mocks base method. +func (m *MockFlowAPIV3) List(ctx context.Context, request *management.ListFlowsRequestParameters, opts ...option.RequestOption) (*auth0.FlowSummaryPage, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, request} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*auth0.FlowSummaryPage) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// List indicates an expected call of List. +func (mr *MockFlowAPIV3MockRecorder) List(ctx, request any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, request}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFlowAPIV3)(nil).List), varargs...) +} + +// MockFlowExecutionAPIV3 is a mock of FlowExecutionAPIV3 interface. +type MockFlowExecutionAPIV3 struct { + ctrl *gomock.Controller + recorder *MockFlowExecutionAPIV3MockRecorder + isgomock struct{} +} + +// MockFlowExecutionAPIV3MockRecorder is the mock recorder for MockFlowExecutionAPIV3. +type MockFlowExecutionAPIV3MockRecorder struct { + mock *MockFlowExecutionAPIV3 +} + +// NewMockFlowExecutionAPIV3 creates a new mock instance. +func NewMockFlowExecutionAPIV3(ctrl *gomock.Controller) *MockFlowExecutionAPIV3 { + mock := &MockFlowExecutionAPIV3{ctrl: ctrl} + mock.recorder = &MockFlowExecutionAPIV3MockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFlowExecutionAPIV3) EXPECT() *MockFlowExecutionAPIV3MockRecorder { + return m.recorder +} + +// Delete mocks base method. +func (m *MockFlowExecutionAPIV3) Delete(ctx context.Context, flowID, executionID string, opts ...option.RequestOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, flowID, executionID} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Delete", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Delete indicates an expected call of Delete. +func (mr *MockFlowExecutionAPIV3MockRecorder) Delete(ctx, flowID, executionID any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, flowID, executionID}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFlowExecutionAPIV3)(nil).Delete), varargs...) +} + +// List mocks base method. +func (m *MockFlowExecutionAPIV3) List(ctx context.Context, flowID string, request *management.ListFlowExecutionsRequestParameters, opts ...option.RequestOption) (*auth0.FlowExecutionSummaryPage, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, flowID, request} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*auth0.FlowExecutionSummaryPage) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// List indicates an expected call of List. +func (mr *MockFlowExecutionAPIV3MockRecorder) List(ctx, flowID, request any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, flowID, request}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFlowExecutionAPIV3)(nil).List), varargs...) +} + +// MockFlowVaultConnectionAPIV3 is a mock of FlowVaultConnectionAPIV3 interface. +type MockFlowVaultConnectionAPIV3 struct { + ctrl *gomock.Controller + recorder *MockFlowVaultConnectionAPIV3MockRecorder + isgomock struct{} +} + +// MockFlowVaultConnectionAPIV3MockRecorder is the mock recorder for MockFlowVaultConnectionAPIV3. +type MockFlowVaultConnectionAPIV3MockRecorder struct { + mock *MockFlowVaultConnectionAPIV3 +} + +// NewMockFlowVaultConnectionAPIV3 creates a new mock instance. +func NewMockFlowVaultConnectionAPIV3(ctrl *gomock.Controller) *MockFlowVaultConnectionAPIV3 { + mock := &MockFlowVaultConnectionAPIV3{ctrl: ctrl} + mock.recorder = &MockFlowVaultConnectionAPIV3MockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockFlowVaultConnectionAPIV3) EXPECT() *MockFlowVaultConnectionAPIV3MockRecorder { + return m.recorder +} + +// Delete mocks base method. +func (m *MockFlowVaultConnectionAPIV3) Delete(ctx context.Context, id string, opts ...option.RequestOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, id} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Delete", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Delete indicates an expected call of Delete. +func (mr *MockFlowVaultConnectionAPIV3MockRecorder) Delete(ctx, id any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, id}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockFlowVaultConnectionAPIV3)(nil).Delete), varargs...) +} + +// List mocks base method. +func (m *MockFlowVaultConnectionAPIV3) List(ctx context.Context, request *management.ListFlowsVaultConnectionsRequestParameters, opts ...option.RequestOption) (*auth0.FlowsVaultConnectionSummaryPage, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, request} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*auth0.FlowsVaultConnectionSummaryPage) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// List indicates an expected call of List. +func (mr *MockFlowVaultConnectionAPIV3MockRecorder) List(ctx, request any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, request}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockFlowVaultConnectionAPIV3)(nil).List), varargs...) +} diff --git a/internal/auth0/network_acl.go b/internal/auth0/network_acl.go index 14a797d33..10aeca914 100644 --- a/internal/auth0/network_acl.go +++ b/internal/auth0/network_acl.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=network_acl.go -destination=mock/network_acl_mock.go -package=mock +//go:generate go tool mockgen -source=network_acl.go -destination=mock/network_acl_mock.go -package=mock package auth0 diff --git a/internal/auth0/organization.go b/internal/auth0/organization.go index 521092592..e339bee09 100644 --- a/internal/auth0/organization.go +++ b/internal/auth0/organization.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=organization.go -destination=mock/organization_mock.go -package=mock +//go:generate go tool mockgen -source=organization.go -destination=mock/organization_mock.go -package=mock package auth0 diff --git a/internal/auth0/phone_notification_template.go b/internal/auth0/phone_notification_template.go index eeef666a6..ace419534 100644 --- a/internal/auth0/phone_notification_template.go +++ b/internal/auth0/phone_notification_template.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=phone_notification_template.go -destination=mock/phone_notification_template_mock.go -package=mock +//go:generate go tool mockgen -source=phone_notification_template.go -destination=mock/phone_notification_template_mock.go -package=mock package auth0 diff --git a/internal/auth0/refresh_token.go b/internal/auth0/refresh_token.go index 8f4a56ccc..e35e18d8f 100644 --- a/internal/auth0/refresh_token.go +++ b/internal/auth0/refresh_token.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=refresh_token.go -destination=mock/refresh_token_mock.go -package=mock +//go:generate go tool mockgen -source=refresh_token.go -destination=mock/refresh_token_mock.go -package=mock package auth0 diff --git a/internal/auth0/resource_server.go b/internal/auth0/resource_server.go index 67bb43e88..7b445356d 100644 --- a/internal/auth0/resource_server.go +++ b/internal/auth0/resource_server.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=resource_server.go -destination=mock/resource_server_mock.go -package=mock +//go:generate go tool mockgen -source=resource_server.go -destination=mock/resource_server_mock.go -package=mock package auth0 diff --git a/internal/auth0/role.go b/internal/auth0/role.go index b28b984cf..57d8a2154 100644 --- a/internal/auth0/role.go +++ b/internal/auth0/role.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=role.go -destination=mock/roles_mock.go -package=mock +//go:generate go tool mockgen -source=role.go -destination=mock/roles_mock.go -package=mock package auth0 diff --git a/internal/auth0/rule.go b/internal/auth0/rule.go index 647e4ebe8..26ffd7c0d 100644 --- a/internal/auth0/rule.go +++ b/internal/auth0/rule.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=rule.go -destination=mock/rule_mock.go -package=mock +//go:generate go tool mockgen -source=rule.go -destination=mock/rule_mock.go -package=mock package auth0 diff --git a/internal/auth0/self_service_profiles.go b/internal/auth0/self_service_profiles.go index abdac2028..c2520f3d8 100644 --- a/internal/auth0/self_service_profiles.go +++ b/internal/auth0/self_service_profiles.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=self_service_profiles.go -destination=mock/self_service_profiles.go -package=mock +//go:generate go tool mockgen -source=self_service_profiles.go -destination=mock/self_service_profiles.go -package=mock package auth0 diff --git a/internal/auth0/session.go b/internal/auth0/session.go index eb777963f..26719ad60 100644 --- a/internal/auth0/session.go +++ b/internal/auth0/session.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=session.go -destination=mock/session_mock.go -package=mock +//go:generate go tool mockgen -source=session.go -destination=mock/session_mock.go -package=mock package auth0 diff --git a/internal/auth0/tenant.go b/internal/auth0/tenant.go index 6508a4f95..c322d342d 100644 --- a/internal/auth0/tenant.go +++ b/internal/auth0/tenant.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=tenant.go -destination=mock/tenant_mock.go -package=mock +//go:generate go tool mockgen -source=tenant.go -destination=mock/tenant_mock.go -package=mock package auth0 diff --git a/internal/auth0/token_exchange.go b/internal/auth0/token_exchange.go index 7f1762e09..bcfbccb21 100644 --- a/internal/auth0/token_exchange.go +++ b/internal/auth0/token_exchange.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=token_exchange.go -destination=mock/token_exchange_mock.go -package=mock +//go:generate go tool mockgen -source=token_exchange.go -destination=mock/token_exchange_mock.go -package=mock package auth0 diff --git a/internal/auth0/user.go b/internal/auth0/user.go index cda800b2e..aefeb1cdf 100644 --- a/internal/auth0/user.go +++ b/internal/auth0/user.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=user.go -destination=mock/user_mock.go -package=mock +//go:generate go tool mockgen -source=user.go -destination=mock/user_mock.go -package=mock package auth0 diff --git a/internal/auth0/user_attribute_profiles.go b/internal/auth0/user_attribute_profiles.go index 458264810..bb5539e6e 100644 --- a/internal/auth0/user_attribute_profiles.go +++ b/internal/auth0/user_attribute_profiles.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=user_attribute_profiles.go -destination=mock/user_attribute_profiles.go -package=mock +//go:generate go tool mockgen -source=user_attribute_profiles.go -destination=mock/user_attribute_profiles.go -package=mock package auth0 From 013326a06e296c0431ee23fc654b53d36e706a85 Mon Sep 17 00:00:00 2001 From: ramya18101 Date: Wed, 9 Sep 2026 20:11:07 +0530 Subject: [PATCH 5/5] Update branch to latest --- docs/auth0_network-acl_create.md | 30 +- docs/auth0_network-acl_update.md | 30 +- go.mod | 2 +- go.sum | 4 +- internal/auth0/auth0.go | 2 + internal/auth0/mock/network_acl_key_mock.go | 57 ++ internal/auth0/network_acl_key.go | 22 + internal/cli/flags.go | 8 + internal/cli/network_acl.go | 640 +++++++++++-------- internal/cli/network_acl_test.go | 251 +++++++- internal/display/network_acl.go | 30 + internal/display/network_acl_test.go | 86 +++ internal/prompt/prompt.go | 11 + test/integration/network-acl-test-cases.yaml | 16 +- 14 files changed, 867 insertions(+), 322 deletions(-) create mode 100644 internal/auth0/mock/network_acl_key_mock.go create mode 100644 internal/auth0/network_acl_key.go diff --git a/docs/auth0_network-acl_create.md b/docs/auth0_network-acl_create.md index 234eaa583..59f472e87 100644 --- a/docs/auth0_network-acl_create.md +++ b/docs/auth0_network-acl_create.md @@ -24,9 +24,11 @@ auth0 network-acl create [flags] auth0 network-acl create --description "Redirect Traffic" --priority 3 --active true --rule '{"action":{"redirect":true,"redirect_uri":"https://example.com"},"scope":"management","match":{"ipv4_cidrs":["192.168.1.0/24"]}}' auth0 network-acl create -d "Block Bots" -p 4 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"user_agents":["badbot/*","malicious/*"],"ja3_fingerprints":["deadbeef","cafebabe"]}}' auth0 network-acl create --description "Complex Rule" --priority 5 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"],"geo_country_codes":["US"]}}' - - # Early Access (auth0_managed match/not_match value): + auth0 network-acl create --description "Deny All" --priority 7 --active true --rule '{"action":{"block":true},"scope":"tenant","match_all":true}' + + # Early Access (auth0_managed and http_message_signature match/not_match value): auth0 network-acl create -d "Curated Blocklist" -p 6 --active true --rule '{"action":{"log":true},"scope":"tenant","not_match":{"auth0_managed":["auth0.vpn","auth0.proxy"]}}' + auth0 network-acl create -d "Only Signed" -p 8 --active true --rule '{"action":{"allow":true},"scope":"authentication","match":{"http_message_signature":{"keys":[{"id": "key_123"}]}}}' ``` @@ -34,24 +36,12 @@ auth0 network-acl create [flags] ## Flags ``` - --action string Action for the rule (block, allow, log, redirect) - --active string Whether the network ACL is active (required, 'true' or 'false') - --asns ints Comma-separated list of ASNs to match (Eg. 64496,64497,64498) - --auth0-managed strings Comma-separated list of Auth0-curated blocklists to match (Eg. auth0.icloud_relay_proxy,auth0.low_reputation). (EA only). - --country-codes strings Comma-separated list of country codes to match (Eg. US,CA,MX) - -d, --description string Description of the network ACL (required) - --ipv4-cidrs strings Comma-separated list of IPv4 CIDR ranges (Eg. 192.168.1.0/24,10.0.0.0/8) - --ipv6-cidrs strings Comma-separated list of IPv6 CIDR ranges (Eg. 2001:db8::/32,2001:db8:1234::/48) - --ja3-fingerprints strings Comma-separated list of JA3 fingerprints to match (Eg. deadbeef,cafebabe) - --ja4-fingerprints strings Comma-separated list of JA4 fingerprints to match (Eg. t13d1516h2_8daaf6152771) - --json Output in json format. - --json-compact Output in compact json format. - -p, --priority int Priority of the network ACL (required) - --redirect-uri string URI to redirect to when action is redirect - --rule string Network ACL rule configuration in JSON format (required for non-interactive mode) - --scope string Scope of the rule (management, authentication, tenant) - --subdivision-codes strings Comma-separated list of subdivision codes to match (Eg. US-NY,US-CA) - --user-agents strings Comma-separated list of user agents to match (Eg. badbot/*,malicious/*) + --active string Whether the network ACL is active ('true' or 'false'). + -d, --description string Description of the network ACL (Eg. "Block suspicious IPs"). + --json Output in json format. + --json-compact Output in compact json format. + -p, --priority int Priority of the network ACL (Eg. 5). + --rule string Network ACL rule configuration in JSON format (required for non-interactive mode). ``` diff --git a/docs/auth0_network-acl_update.md b/docs/auth0_network-acl_update.md index 7081a4966..f9b070dab 100644 --- a/docs/auth0_network-acl_update.md +++ b/docs/auth0_network-acl_update.md @@ -19,14 +19,16 @@ auth0 network-acl update [flags] ``` auth0 network-acl update - auth0 network-acl update --priority 5 + auth0 network-acl update --priority 5 auth0 network-acl update --active true auth0 network-acl update --description "Updated description" auth0 network-acl update --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"]}}' auth0 network-acl update --description "Complex Rule updated" --priority 1 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"],"geo_country_codes":["US"]}}' - - # Early Access (auth0_managed match/not_match value): + auth0 network-acl update --rule '{"action":{"block":true},"scope":"tenant","match_all":true}' + + # Early Access (auth0_managed and http_message_signature match/not_match value): auth0 network-acl update --rule '{"action":{"allow":true},"scope":"tenant","match":{"auth0_managed":["auth0.low_reputation"]}}' + auth0 network-acl update --rule '{"action":{"allow":true},"scope":"authentication","match":{"http_message_signature":{"keys":[{"id": "key_123"},{"id": "key_456"}]}}}' ``` @@ -34,23 +36,11 @@ auth0 network-acl update [flags] ## Flags ``` - --action string Action for the rule (block, allow, log, redirect) - --active string Whether the network ACL is active ('true' or 'false') - --asns ints Comma-separated list of ASNs to match (Eg. 64496,64497,64498) - --auth0-managed strings Comma-separated list of Auth0-curated blocklists to match (Eg. auth0.icloud_relay_proxy,auth0.low_reputation). (EA only). - --country-codes strings Comma-separated list of country codes to match (Eg. US,CA,MX) - -d, --description string Description of the network ACL - --ipv4-cidrs strings Comma-separated list of IPv4 CIDR ranges (Eg. 192.168.1.0/24,10.0.0.0/8) - --ipv6-cidrs strings Comma-separated list of IPv6 CIDR ranges (Eg. 2001:db8::/32,2001:db8:1234::/48) - --ja3-fingerprints strings Comma-separated list of JA3 fingerprints to match (Eg. deadbeef,cafebabe) - --ja4-fingerprints strings Comma-separated list of JA4 fingerprints to match (Eg. t13d1516h2_8daaf6152771) - --json Output in JSON format - -p, --priority int Priority of the network ACL (default 1) - --redirect-uri string URI to redirect to when action is redirect - --rule string Network ACL rule configuration in JSON format - --scope string Scope of the rule (management, authentication, tenant) - --subdivision-codes strings Comma-separated list of subdivision codes to match (Eg. US-NY,US-CA) - --user-agents strings Comma-separated list of user agents to match (Eg. badbot/*,malicious/*) + --active string Whether the network ACL is active ('true' or 'false'). + -d, --description string Description of the network ACL (Eg. "Block suspicious IPs"). + --json Output in JSON format + -p, --priority int Priority of the network ACL (Eg. 5). (default 1) + --rule string Network ACL rule configuration in JSON format (required for non-interactive mode). ``` diff --git a/go.mod b/go.mod index 6c496c317..24a20548a 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/PuerkitoBio/rehttp v1.4.0 github.com/atotto/clipboard v0.1.4 - github.com/auth0/go-auth0 v1.48.0 + github.com/auth0/go-auth0 v1.49.0 github.com/auth0/go-auth0/v3 v3.4.0 github.com/briandowns/spinner v1.23.2 github.com/charmbracelet/glamour v1.0.0 diff --git a/go.sum b/go.sum index 241201112..3c2119772 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/auth0/go-auth0 v1.48.0 h1:INqEEZbDEkXVI0xUZluS1zzoB4YbYzvCysHH2CNEGzc= -github.com/auth0/go-auth0 v1.48.0/go.mod h1:32sQB1uAn+99fJo6N819EniKq8h785p0ag0lMWhiTaE= +github.com/auth0/go-auth0 v1.49.0 h1:JQH/zoHjeKywqJHu0qUWJP7RAE7IET8yU8SvqIFNKKg= +github.com/auth0/go-auth0 v1.49.0/go.mod h1:32sQB1uAn+99fJo6N819EniKq8h785p0ag0lMWhiTaE= github.com/auth0/go-auth0/v3 v3.4.0 h1:CjdnuuDUcVG19BIT7bloEYtyQHpIYr6rwQI2d1Wz7Fk= github.com/auth0/go-auth0/v3 v3.4.0/go.mod h1:MGifkH9wfgGbWsgFPrz2QbM2wLmScH1kGgIvAtd65Xw= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48= diff --git a/internal/auth0/auth0.go b/internal/auth0/auth0.go index 1ec8df22f..61dcc60c2 100644 --- a/internal/auth0/auth0.go +++ b/internal/auth0/auth0.go @@ -89,6 +89,7 @@ type APIV3 struct { UserRefreshToken UserRefreshTokenAPIV3 ActionModule ActionModuleAPIV3 ActionModuleVersion ActionModuleVersionAPIV3 + NetworkACLKey NetworkACLKeyAPIV3 } func NewAPIV3(m *managementv3.Management) *APIV3 { @@ -108,6 +109,7 @@ func NewAPIV3(m *managementv3.Management) *APIV3 { UserRefreshToken: m.Users.RefreshToken, ActionModule: m.Actions.Modules, ActionModuleVersion: m.Actions.Modules.Versions, + NetworkACLKey: m.Keys.NetworkACLs, } } diff --git a/internal/auth0/mock/network_acl_key_mock.go b/internal/auth0/mock/network_acl_key_mock.go new file mode 100644 index 000000000..76a886697 --- /dev/null +++ b/internal/auth0/mock/network_acl_key_mock.go @@ -0,0 +1,57 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: network_acl_key.go + +// Package mock is a generated GoMock package. +package mock + +import ( + context "context" + reflect "reflect" + + management "github.com/auth0/go-auth0/v3/management" + option "github.com/auth0/go-auth0/v3/management/option" + "go.uber.org/mock/gomock" +) + +// MockNetworkACLKeyAPIV3 is a mock of NetworkACLKeyAPIV3 interface. +type MockNetworkACLKeyAPIV3 struct { + ctrl *gomock.Controller + recorder *MockNetworkACLKeyAPIV3MockRecorder +} + +// MockNetworkACLKeyAPIV3MockRecorder is the mock recorder for MockNetworkACLKeyAPIV3. +type MockNetworkACLKeyAPIV3MockRecorder struct { + mock *MockNetworkACLKeyAPIV3 +} + +// NewMockNetworkACLKeyAPIV3 creates a new mock instance. +func NewMockNetworkACLKeyAPIV3(ctrl *gomock.Controller) *MockNetworkACLKeyAPIV3 { + mock := &MockNetworkACLKeyAPIV3{ctrl: ctrl} + mock.recorder = &MockNetworkACLKeyAPIV3MockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockNetworkACLKeyAPIV3) EXPECT() *MockNetworkACLKeyAPIV3MockRecorder { + return m.recorder +} + +// List mocks base method. +func (m *MockNetworkACLKeyAPIV3) List(ctx context.Context, opts ...option.RequestOption) (*management.GetAllKeysNetworkACLsResponseContent, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(*management.GetAllKeysNetworkACLsResponseContent) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// List indicates an expected call of List. +func (mr *MockNetworkACLKeyAPIV3MockRecorder) List(ctx interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockNetworkACLKeyAPIV3)(nil).List), varargs...) +} diff --git a/internal/auth0/network_acl_key.go b/internal/auth0/network_acl_key.go new file mode 100644 index 000000000..ae9703ba2 --- /dev/null +++ b/internal/auth0/network_acl_key.go @@ -0,0 +1,22 @@ +//go:generate go tool mockgen -source=network_acl_key.go -destination=mock/network_acl_key_mock.go -package=mock + +package auth0 + +import ( + "context" + + managementv3 "github.com/auth0/go-auth0/v3/management" + "github.com/auth0/go-auth0/v3/management/option" +) + +// NetworkACLKeyAPIV3 is the V3 SDK interface for the /keys/network-acls endpoint. +// +// Only List is exposed today: the network-acl command uses it to let a user pick +// existing signing keys by name when adding the http_message_signature signal to a +// rule. Key create/delete is intentionally not wired yet (DXCDT-2269). +type NetworkACLKeyAPIV3 interface { + // List retrieves all Network ACL keys for the tenant. + // + // Required scope: `read:network_acl_keys`. The response is not paginated. + List(ctx context.Context, opts ...option.RequestOption) (*managementv3.GetAllKeysNetworkACLsResponseContent, error) +} diff --git a/internal/cli/flags.go b/internal/cli/flags.go index ca10593a2..ec157a58f 100644 --- a/internal/cli/flags.go +++ b/internal/cli/flags.go @@ -173,6 +173,14 @@ func (f *Flag) RegisterIntSlice(cmd *cobra.Command, value *[]int, defaultValue [ registerIntSlice(cmd, f, value, defaultValue, false) } +// Deprecate marks an already-registered flag as deprecated, +// prints message and hides it from help and generated docs. +func (f *Flag) Deprecate(cmd *cobra.Command, message string) { + if err := cmd.Flags().MarkDeprecated(f.LongForm, message); err != nil { + panic(auth0.Error(err, fmt.Sprintf("failed to deprecate flag %q", f.LongForm))) + } +} + func (f *Flag) AskIntSlice(cmd *cobra.Command, value *[]int, defaultValue *[]int) error { if shouldAsk(cmd, f, false) { return askIntSlice(f, value, defaultValue) diff --git a/internal/cli/network_acl.go b/internal/cli/network_acl.go index d406eaabc..0cfc8ecbe 100644 --- a/internal/cli/network_acl.go +++ b/internal/cli/network_acl.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "strconv" "strings" "github.com/auth0/go-auth0/management" @@ -22,23 +23,33 @@ var ( } networkACLDescription = Flag{ - Name: "Description", - LongForm: "description", - ShortForm: "d", - Help: "Description of the network ACL (Eg. \"Block suspicious IPs\", required)", + Name: "Description", + LongForm: "description", + ShortForm: "d", + Help: "Description of the network ACL (Eg. \"Block suspicious IPs\").", + IsRequired: true, } networkACLActive = Flag{ - Name: "Active", - LongForm: "active", - Help: "Whether the network ACL is active (Eg. true, default: false)", + Name: "Active", + LongForm: "active", + Help: "Whether the network ACL is active ('true' or 'false').", + IsRequired: true, } networkACLPriority = Flag{ - Name: "Priority", - LongForm: "priority", - ShortForm: "p", - Help: "Priority of the network ACL in number(Eg. 5)", + Name: "Priority", + LongForm: "priority", + ShortForm: "p", + Help: "Priority of the network ACL (Eg. 5).", + IsRequired: true, + } + + networkACLRule = Flag{ + Name: "Rule", + LongForm: "rule", + Help: "Network ACL rule configuration in JSON format (required for non-interactive mode).", + IsRequired: true, } networkACLRuleAction = Flag{ @@ -53,6 +64,12 @@ var ( Help: "URI to redirect to when action is redirect (Eg. \"https://example.com/blocked\")", } + networkACLScope = Flag{ + Name: "Scope", + LongForm: "scope", + Help: "Scope of the rule (management, authentication, tenant)", + } + networkACLASNs = Flag{ Name: "ASNs", LongForm: "asns", @@ -108,56 +125,50 @@ var ( } ) +// networkACLBasicInputs holds the flag-driven fields shared by create and update. +type networkACLBasicInputs struct { + ID string + Description string + Active bool + ActiveStr string + Priority int + RuleJSON string +} + +// validateNetworkACLDescription ensures the description is non-empty and within the API length limit. +func validateNetworkACLDescription(description string) error { + if len(description) == 0 { + return fmt.Errorf("description cannot be empty") + } + if len(description) > 255 { + return fmt.Errorf("description cannot exceed 255 characters") + } + return nil +} + // validateAndSetBasicFields handles the common validation and patch building logic for basic fields. -func validateAndSetBasicFields(inputs *struct { - ID string - Description string - Active bool - ActiveStr string - Priority int - RuleJSON string - Action string - RedirectURI string - Scope string - ASNs []int - CountryCodes []string - SubdivCodes []string - IPv4CIDRs []string - IPv6CIDRs []string - JA3 []string - JA4 []string - UserAgents []string - Auth0Managed []string - MatchRule bool - NoMatchRule bool -}, patch *management.NetworkACL, cmd *cobra.Command) error { - if cmd.Flags().Changed("description") { - if len(inputs.Description) > 255 { - return fmt.Errorf("description cannot exceed 255 characters") - } - if len(inputs.Description) == 0 { - return fmt.Errorf("description cannot be empty") +func validateAndSetBasicFields(inputs *networkACLBasicInputs, patch *management.NetworkACL, cmd *cobra.Command) error { + if networkACLDescription.IsSet(cmd) { + if err := validateNetworkACLDescription(inputs.Description); err != nil { + return err } patch.Description = &inputs.Description } - if cmd.Flags().Changed("active") { - switch inputs.ActiveStr { - case "true": - inputs.Active = true - case "false": - inputs.Active = false - default: + if networkACLActive.IsSet(cmd) { + active, err := strconv.ParseBool(inputs.ActiveStr) + if err != nil { return fmt.Errorf("--active must be either 'true' or 'false', got %q", inputs.ActiveStr) } + inputs.Active = active patch.Active = &inputs.Active } - if cmd.Flags().Changed("priority") { + if networkACLPriority.IsSet(cmd) { patch.Priority = &inputs.Priority } - if cmd.Flags().Changed("rule") { + if networkACLRule.IsSet(cmd) { var rule management.NetworkACLRule if err := json.Unmarshal([]byte(inputs.RuleJSON), &rule); err != nil { return fmt.Errorf("invalid rule JSON: %w", err) @@ -176,11 +187,10 @@ func applyNetworkACLPatch(ctx context.Context, cli *cli, id string, patch *manag return fmt.Errorf("failed to update network ACL with ID %q: %w", id, err) } - cli.renderer.NetworkACLUpdate(patch) - return nil + return cli.renderer.NetworkACLUpdate(patch) } -func selectNetworkACLParams(cmd *cobra.Command) (map[string]bool, error) { +func selectNetworkACLParams() (map[string]bool, error) { options := []string{ "ASNs", "Country Codes", @@ -191,6 +201,7 @@ func selectNetworkACLParams(cmd *cobra.Command) (map[string]bool, error) { "JA4Fingerprints", "User Agents", "Auth0 Managed", + "Signature Keys", } var selected []string @@ -218,21 +229,23 @@ func selectNetworkACLParams(cmd *cobra.Command) (map[string]bool, error) { // ruleDefaults holds default values extracted from current ACL rule. type ruleDefaults struct { - Scope string - Action string - RedirectURI string - ASNs []int - CountryCodes []string - SubdivCodes []string - IPv4CIDRs []string - IPv6CIDRs []string - JA3 []string - JA4 []string - UserAgents []string - Auth0Managed []string - IsMatchRule bool - HasMatchRule bool - HasNotMatch bool + Scope string + Action string + RedirectURI string + ASNs []int + CountryCodes []string + SubdivCodes []string + IPv4CIDRs []string + IPv6CIDRs []string + JA3 []string + JA4 []string + UserAgents []string + Auth0Managed []string + SignatureKeyIDs []string + IsMatchRule bool + HasMatchRule bool + HasNotMatch bool + MatchAll bool } // extractCurrentRuleDefaults extracts default values from current ACL rule for interactive prompts. @@ -267,6 +280,10 @@ func extractCurrentRuleDefaults(currentACL *management.NetworkACL) *ruleDefaults } } + if currentACL.Rule.MatchAll != nil && *currentACL.Rule.MatchAll { + defaults.MatchAll = true + } + // Extract match criteria from either Match or NotMatch. var match *management.NetworkACLRuleMatch if currentACL.Rule.Match != nil { @@ -307,28 +324,46 @@ func extractCurrentRuleDefaults(currentACL *management.NetworkACL) *ruleDefaults if match.Auth0Managed != nil { defaults.Auth0Managed = *match.Auth0Managed } + defaults.SignatureKeyIDs = signatureKeyIDs(match) } return defaults } +// signatureKeyIDs flattens the referenced key ids of a match's +// http_message_signature signal, or nil when the signal is not set. +func signatureKeyIDs(match *management.NetworkACLRuleMatch) []string { + if match == nil || match.HTTPMessageSignature == nil { + return nil + } + ids := make([]string, 0, len(match.HTTPMessageSignature.Keys)) + for _, k := range match.HTTPMessageSignature.Keys { + if k.ID != nil { + ids = append(ids, *k.ID) + } + } + return ids +} + // ruleInputs holds user inputs for rule configuration. type ruleInputs struct { - Scope string - Action string - RedirectURI string - ASNs []int - CountryCodes []string - SubdivCodes []string - IPv4CIDRs []string - IPv6CIDRs []string - JA3 []string - JA4 []string - UserAgents []string - Auth0Managed []string - IsMatchRule bool - MatchRule bool - NoMatchRule bool + Scope string + Action string + RedirectURI string + ASNs []int + CountryCodes []string + SubdivCodes []string + IPv4CIDRs []string + IPv6CIDRs []string + JA3 []string + JA4 []string + UserAgents []string + Auth0Managed []string + SignatureKeyIDs []string + IsMatchRule bool + MatchRule bool + NoMatchRule bool + MatchAll bool } // promptForRuleDetails handles interactive prompting for rule configuration. @@ -348,13 +383,19 @@ func promptForRuleDetails(cmd *cobra.Command, cli *cli, defaults *ruleDefaults, // Ask for action. actions := []string{"block", "allow", "log", "redirect"} - if err := networkACLRuleAction.Select(cmd, &inputs.Action, actions, &defaults.Action); err != nil { + if err := (&Flag{ + Name: "Action", + Help: "Action for the rule (block, allow, log, redirect)", + }).Select(cmd, &inputs.Action, actions, &defaults.Action); err != nil { return nil, err } // If action is redirect, ask for redirect URI. if inputs.Action == "redirect" { - if err := networkACLRedirectURI.Ask(cmd, &inputs.RedirectURI, &defaults.RedirectURI); err != nil { + if err := (&Flag{ + Name: "RedirectURI", + Help: "URI to redirect to when action is redirect (Eg. \"https://example.com/blocked\")", + }).Ask(cmd, &inputs.RedirectURI, &defaults.RedirectURI); err != nil { return nil, err } if inputs.RedirectURI == "" { @@ -362,6 +403,13 @@ func promptForRuleDetails(cmd *cobra.Command, cli *cli, defaults *ruleDefaults, } } + if err := prompt.AskBool("Match all traffic unconditionally? (Eg. block all). Cannot be combined with match/not_match criteria.", &inputs.MatchAll, defaults.MatchAll); err != nil { + return nil, err + } + if inputs.MatchAll { + return inputs, nil + } + // Handle Match/NotMatch rule changes for updates. if isUpdate { if defaults.HasMatchRule { @@ -386,7 +434,7 @@ func promptForRuleDetails(cmd *cobra.Command, cli *cli, defaults *ruleDefaults, var selectedMatchOption string if err := (&Flag{ Name: "What kind of rule do you want to create?", - Help: "Match or Not Match rule (ASNs, Country Codes, Subdivision Codes, IPv4 CIDRs, IPv6 CIDRs, JA3/JA4 Fingerprints, User Agents, Auth0 Managed)", + Help: "Match or Not Match rule (ASNs, Country Codes, Subdivision Codes, IPv4 CIDRs, IPv6 CIDRs, JA3/JA4 Fingerprints, User Agents, Auth0 Managed, Signature Keys)", }).Select(cmd, &selectedMatchOption, matchOptions, nil); err != nil { return nil, err } @@ -394,13 +442,13 @@ func promptForRuleDetails(cmd *cobra.Command, cli *cli, defaults *ruleDefaults, } // Select which parameters to provide. - selectedParams, err := selectNetworkACLParams(cmd) + selectedParams, err := selectNetworkACLParams() if err != nil { return nil, err } // Ask for values only for selected parameters. - if err := promptForMatchCriteria(cmd, selectedParams, inputs, defaults); err != nil { + if err := promptForMatchCriteria(cmd, cli, selectedParams, inputs, defaults); err != nil { return nil, err } @@ -408,72 +456,164 @@ func promptForRuleDetails(cmd *cobra.Command, cli *cli, defaults *ruleDefaults, } // promptForMatchCriteria handles prompting for all match criteria based on selected parameters. -func promptForMatchCriteria(cmd *cobra.Command, selectedParams map[string]bool, inputs *ruleInputs, defaults *ruleDefaults) error { +func promptForMatchCriteria(cmd *cobra.Command, cli *cli, selectedParams map[string]bool, inputs *ruleInputs, defaults *ruleDefaults) error { if selectedParams["ASNs"] { - if err := networkACLASNs.AskIntSlice(cmd, &inputs.ASNs, &defaults.ASNs); err != nil { + if err := (&Flag{ + Name: "ASNs", + Help: "Comma-separated list of ASNs to match (Eg. 64496,64497,64498)", + }).AskIntSlice(cmd, &inputs.ASNs, &defaults.ASNs); err != nil { return err } } if selectedParams["Country Codes"] { currentCountryCodesStr := strings.Join(defaults.CountryCodes, ",") - if err := networkACLCountryCodes.AskMany(cmd, &inputs.CountryCodes, ¤tCountryCodesStr); err != nil { + if err := (&Flag{ + Name: "CountryCodes", + Help: "Comma-separated list of country codes to match (Eg. US,CA,MX)", + }).AskMany(cmd, &inputs.CountryCodes, ¤tCountryCodesStr); err != nil { return err } } if selectedParams["Subdivision Codes"] { currentSubDivCodesStr := strings.Join(defaults.SubdivCodes, ",") - if err := networkACLSubdivisionCodes.AskMany(cmd, &inputs.SubdivCodes, ¤tSubDivCodesStr); err != nil { + if err := (&Flag{ + Name: "SubdivisionCodes", + Help: "Comma-separated list of subdivision codes to match (Eg. US-NY,US-CA)", + }).AskMany(cmd, &inputs.SubdivCodes, ¤tSubDivCodesStr); err != nil { return err } } if selectedParams["IPv4CIDRs"] { currentIPv4CIDRsStr := strings.Join(defaults.IPv4CIDRs, ",") - if err := networkACLIPv4CIDRs.AskMany(cmd, &inputs.IPv4CIDRs, ¤tIPv4CIDRsStr); err != nil { + if err := (&Flag{ + Name: "IPv4CIDRs", + Help: "Comma-separated list of IPv4 CIDR ranges (Eg. 192.168.1.0/24,10.0.0.0/8)", + }).AskMany(cmd, &inputs.IPv4CIDRs, ¤tIPv4CIDRsStr); err != nil { return err } } if selectedParams["IPv6CIDRs"] { currentIPv6CIDRsStr := strings.Join(defaults.IPv6CIDRs, ",") - if err := networkACLIPv6CIDRs.AskMany(cmd, &inputs.IPv6CIDRs, ¤tIPv6CIDRsStr); err != nil { + if err := (&Flag{ + Name: "IPv6CIDRs", + Help: "Comma-separated list of IPv6 CIDR ranges (Eg. 2001:db8::/32,2001:db8:1234::/48)", + }).AskMany(cmd, &inputs.IPv6CIDRs, ¤tIPv6CIDRsStr); err != nil { return err } } if selectedParams["JA3Fingerprints"] { currentJA3Str := strings.Join(defaults.JA3, ",") - if err := networkACLJA3Fingerprints.AskMany(cmd, &inputs.JA3, ¤tJA3Str); err != nil { + if err := (&Flag{ + Name: "JA3Fingerprints", + Help: "Comma-separated list of JA3 fingerprints to match (Eg. deadbeef,cafebabe)", + }).AskMany(cmd, &inputs.JA3, ¤tJA3Str); err != nil { return err } } if selectedParams["JA4Fingerprints"] { currentJA4Str := strings.Join(defaults.JA4, ",") - if err := networkACLJA4Fingerprints.AskMany(cmd, &inputs.JA4, ¤tJA4Str); err != nil { + if err := (&Flag{ + Name: "JA4Fingerprints", + Help: "Comma-separated list of JA4 fingerprints to match (Eg. t13d1516h2_8daaf6152771)", + }).AskMany(cmd, &inputs.JA4, ¤tJA4Str); err != nil { return err } } if selectedParams["User Agents"] { currentUserAgentsStr := strings.Join(defaults.UserAgents, ",") - if err := networkACLUserAgents.AskMany(cmd, &inputs.UserAgents, ¤tUserAgentsStr); err != nil { + if err := (&Flag{ + Name: "UserAgents", + Help: "Comma-separated list of user agents to match (Eg. badbot/*,malicious/*)", + }).AskMany(cmd, &inputs.UserAgents, ¤tUserAgentsStr); err != nil { return err } } if selectedParams["Auth0 Managed"] { currentAuth0ManagedStr := strings.Join(defaults.Auth0Managed, ",") - if err := networkACLAuth0Managed.AskMany(cmd, &inputs.Auth0Managed, ¤tAuth0ManagedStr); err != nil { + if err := (&Flag{ + Name: "Auth0Managed", + Help: "Comma-separated list of Auth0-curated blocklists to match (Eg. auth0.icloud_relay_proxy,auth0.low_reputation). (EA only).", + }).AskMany(cmd, &inputs.Auth0Managed, ¤tAuth0ManagedStr); err != nil { + return err + } + } + + if selectedParams["Signature Keys"] { + ids, err := cli.pickNetworkACLSignatureKeys(cmd, defaults.SignatureKeyIDs) + if err != nil { return err } + inputs.SignatureKeyIDs = ids } return nil } +// pickNetworkACLSignatureKeys resolves the http_message_signature key ids for a rule. +// +// It lists the tenant's Network ACL keys (v3 /keys/network-acls) and shows a multi-select +// of them, with the ids already referenced by the rule (current) pre-selected. Setting the +// signal non-interactively is done through the full rule JSON passed to --rule. +func (c *cli) pickNetworkACLSignatureKeys(cmd *cobra.Command, current []string) ([]string, error) { + var options []string + labelToID := make(map[string]string) + idToLabel := make(map[string]string) + if err := ansi.Waiting(func() error { + resp, err := c.apiv3.NetworkACLKey.List(cmd.Context()) + if err != nil { + return err + } + if resp != nil { + for _, k := range resp.Keys { + id := k.GetID() + label := fmt.Sprintf("%s (%s)", k.GetName(), id) + options = append(options, label) + idToLabel[id] = label + labelToID[label] = id + } + } + return nil + }); err != nil { + return nil, err + } + + if len(options) == 0 { + return nil, errors.New("no Network ACL keys exist for this tenant; create a key first, then reference it here") + } + + // Pre-select the keys already referenced by the rule. + defaults := make([]string, 0, len(current)) + for _, id := range current { + if label, ok := idToLabel[id]; ok { + defaults = append(defaults, label) + } + } + + var selected []string + if err := prompt.AskMultiSelectWithDefault( + "Select the signing keys whose HTTP message signature satisfies the rule using the spacebar and press Enter to confirm:", + &selected, + defaults, + options..., + ); err != nil { + return nil, err + } + + ids := make([]string, 0, len(selected)) + for _, label := range selected { + ids = append(ids, labelToID[label]) + } + return ids, nil +} + // buildNetworkACLRule creates a NetworkACLRule from the provided inputs. func buildNetworkACLRule(inputs *ruleInputs) (*management.NetworkACLRule, error) { rule := &management.NetworkACLRule{ @@ -494,6 +634,11 @@ func buildNetworkACLRule(inputs *ruleInputs) (*management.NetworkACLRule, error) rule.Action.RedirectURI = &inputs.RedirectURI } + if inputs.MatchAll { + rule.MatchAll = auth0.Bool(true) + return rule, nil + } + // Build match criteria. match := &management.NetworkACLRuleMatch{} matchProvided := false @@ -534,6 +679,14 @@ func buildNetworkACLRule(inputs *ruleInputs) (*management.NetworkACLRule, error) match.Auth0Managed = &inputs.Auth0Managed matchProvided = true } + if len(inputs.SignatureKeyIDs) > 0 { + keys := make([]*management.NetworkACLHTTPMessageSignatureKey, len(inputs.SignatureKeyIDs)) + for i := range inputs.SignatureKeyIDs { + keys[i] = &management.NetworkACLHTTPMessageSignatureKey{ID: &inputs.SignatureKeyIDs[i]} + } + match.HTTPMessageSignature = &management.NetworkACLHTTPMessageSignature{Keys: keys} + matchProvided = true + } if !matchProvided { return nil, fmt.Errorf("at least one match criteria must be provided") @@ -636,26 +789,7 @@ func showNetworkACLCmd(cli *cli) *cobra.Command { } func createNetworkACLCmd(cli *cli) *cobra.Command { - var inputs struct { - Description string - Active bool - ActiveStr string // Added for handling --active true/false. - Priority int - RuleJSON string - Action string - RedirectURI string - ASNs []int - CountryCodes []string - SubdivCodes []string - IPv4CIDRs []string - IPv6CIDRs []string - JA3 []string - JA4 []string - UserAgents []string - Auth0Managed []string - Scope string - isMatchRule bool - } + var inputs networkACLBasicInputs cmd := &cobra.Command{ Use: "create", @@ -671,71 +805,37 @@ The --rule parameter is required and must contain a valid JSON object with actio auth0 network-acl create --description "Redirect Traffic" --priority 3 --active true --rule '{"action":{"redirect":true,"redirect_uri":"https://example.com"},"scope":"management","match":{"ipv4_cidrs":["192.168.1.0/24"]}}' auth0 network-acl create -d "Block Bots" -p 4 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"user_agents":["badbot/*","malicious/*"],"ja3_fingerprints":["deadbeef","cafebabe"]}}' auth0 network-acl create --description "Complex Rule" --priority 5 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"],"geo_country_codes":["US"]}}' - - # Early Access (auth0_managed match/not_match value): + auth0 network-acl create --description "Deny All" --priority 7 --active true --rule '{"action":{"block":true},"scope":"tenant","match_all":true}' + + # Early Access (auth0_managed and http_message_signature match/not_match value): auth0 network-acl create -d "Curated Blocklist" -p 6 --active true --rule '{"action":{"log":true},"scope":"tenant","not_match":{"auth0_managed":["auth0.vpn","auth0.proxy"]}}' + auth0 network-acl create -d "Only Signed" -p 8 --active true --rule '{"action":{"allow":true},"scope":"authentication","match":{"http_message_signature":{"keys":[{"id": "key_123"}]}}}' `, RunE: func(cmd *cobra.Command, args []string) error { - // Check if we're in non-interactive mode (flags provided) but rule JSON is missing. - if !canPrompt(cmd) && !cmd.Flags().Changed("rule") { - return fmt.Errorf("the --rule parameter is required for non-interactive mode. Please provide a valid JSON rule") - } - - // Parse the active flag if provided. - if cmd.Flags().Changed("active") { - switch inputs.ActiveStr { - case "true": - inputs.Active = true - case "false": - inputs.Active = false - default: - return fmt.Errorf("--active must be either 'true' or 'false', got %q", inputs.ActiveStr) - } - } - - // Check if rule JSON was provided. - if cmd.Flags().Changed("rule") { - // Parse the rule JSON. - var rule map[string]interface{} - if err := json.Unmarshal([]byte(inputs.RuleJSON), &rule); err != nil { + // Validate --rule JSON up front, before prompting for other fields, so + // an invalid rule fails immediately instead of after the prompts. + var rule *management.NetworkACLRule + if networkACLRule.IsSet(cmd) { + rule = &management.NetworkACLRule{} + if err := json.Unmarshal([]byte(inputs.RuleJSON), rule); err != nil { return fmt.Errorf("invalid rule JSON: %w", err) } - - // Create the network ACL with the provided rule. - acl := &management.NetworkACL{ - Description: &inputs.Description, - Active: &inputs.Active, - Priority: &inputs.Priority, - } - - // Convert the rule map to the appropriate structure. - if err := json.Unmarshal([]byte(inputs.RuleJSON), &acl.Rule); err != nil { - return fmt.Errorf("failed to parse rule JSON: %w", err) - } - - if err := ansi.Waiting(func() error { - return cli.api.NetworkACL.Create(cmd.Context(), acl) - }); err != nil { - return fmt.Errorf("failed to create network ACL: %w", err) - } - - cli.renderer.NetworkACLCreate(acl) - return nil } - // Interactive or flag-based creation. if err := networkACLDescription.Ask(cmd, &inputs.Description, nil); err != nil { return err } - - if len(inputs.Description) > 255 { - return fmt.Errorf("description cannot exceed 255 characters") + if err := validateNetworkACLDescription(inputs.Description); err != nil { + return err } - if len(inputs.Description) == 0 { - return fmt.Errorf("description is required") + if networkACLActive.IsSet(cmd) { + active, err := strconv.ParseBool(inputs.ActiveStr) + if err != nil { + return fmt.Errorf("--active must be either 'true' or 'false', got %q", inputs.ActiveStr) + } + inputs.Active = active } - defaultStatus := false if err := networkACLActive.AskBool(cmd, &inputs.Active, &defaultStatus); err != nil { return err @@ -745,28 +845,30 @@ The --rule parameter is required and must contain a valid JSON object with actio return err } - // Use helper functions for rule configuration. - defaults := &ruleDefaults{ - Scope: "tenant", - Action: "log", - } - - ruleInputs, err := promptForRuleDetails(cmd, cli, defaults, false) - if err != nil { - return err - } - - // Build the network ACL. acl := &management.NetworkACL{ Description: &inputs.Description, Active: &inputs.Active, Priority: &inputs.Priority, } - // Build the rule. - acl.Rule, err = buildNetworkACLRule(ruleInputs) - if err != nil { - return err + // Use the rule parsed from --rule when provided, otherwise prompt for it. + if rule != nil { + acl.Rule = rule + } else { + defaults := &ruleDefaults{ + Scope: "tenant", + Action: "log", + } + + ruleInputs, err := promptForRuleDetails(cmd, cli, defaults, false) + if err != nil { + return err + } + + acl.Rule, err = buildNetworkACLRule(ruleInputs) + if err != nil { + return err + } } if err := ansi.Waiting(func() error { @@ -775,63 +877,23 @@ The --rule parameter is required and must contain a valid JSON object with actio return fmt.Errorf("failed to create network ACL: %w", err) } - cli.renderer.NetworkACLCreate(acl) - return nil + return cli.renderer.NetworkACLCreate(acl) }, } cmd.Flags().BoolVar(&cli.json, "json", false, "Output in json format.") cmd.Flags().BoolVar(&cli.jsonCompact, "json-compact", false, "Output in compact json format.") - cmd.Flags().StringVarP(&inputs.Description, "description", "d", "", "Description of the network ACL (required)") - cmd.Flags().StringVar(&inputs.ActiveStr, "active", "", "Whether the network ACL is active (required, 'true' or 'false')") - cmd.Flags().IntVarP(&inputs.Priority, "priority", "p", 0, "Priority of the network ACL (required)") - cmd.Flags().StringVar(&inputs.RuleJSON, "rule", "", "Network ACL rule configuration in JSON format (required for non-interactive mode)") - cmd.Flags().StringVar(&inputs.Action, "action", "", "Action for the rule (block, allow, log, redirect)") - cmd.Flags().StringVar(&inputs.RedirectURI, "redirect-uri", "", "URI to redirect to when action is redirect") - cmd.Flags().StringVar(&inputs.Scope, "scope", "", "Scope of the rule (management, authentication, tenant)") - - // Register the string slice flags. - networkACLASNs.RegisterIntSlice(cmd, &inputs.ASNs, nil) - networkACLCountryCodes.RegisterStringSlice(cmd, &inputs.CountryCodes, nil) - networkACLSubdivisionCodes.RegisterStringSlice(cmd, &inputs.SubdivCodes, nil) - networkACLIPv4CIDRs.RegisterStringSlice(cmd, &inputs.IPv4CIDRs, nil) - networkACLIPv6CIDRs.RegisterStringSlice(cmd, &inputs.IPv6CIDRs, nil) - networkACLJA3Fingerprints.RegisterStringSlice(cmd, &inputs.JA3, nil) - networkACLJA4Fingerprints.RegisterStringSlice(cmd, &inputs.JA4, nil) - networkACLUserAgents.RegisterStringSlice(cmd, &inputs.UserAgents, nil) - networkACLAuth0Managed.RegisterStringSlice(cmd, &inputs.Auth0Managed, nil) - - // These flags must be passed in non-interactive mode. - cmd.MarkFlagRequired("description") - cmd.MarkFlagRequired("active") - cmd.MarkFlagRequired("priority") - cmd.MarkFlagRequired("rule") + networkACLDescription.RegisterString(cmd, &inputs.Description, "") + networkACLActive.RegisterString(cmd, &inputs.ActiveStr, "") + networkACLPriority.RegisterInt(cmd, &inputs.Priority, 0) + networkACLRule.RegisterString(cmd, &inputs.RuleJSON, "") + registerDeprecatedRuleFlags(cmd) + return cmd } func updateNetworkACLCmd(cli *cli) *cobra.Command { - var inputs struct { - ID string - Description string - Active bool - ActiveStr string - Priority int - RuleJSON string - Action string - RedirectURI string - Scope string - ASNs []int - CountryCodes []string - SubdivCodes []string - IPv4CIDRs []string - IPv6CIDRs []string - JA3 []string - JA4 []string - UserAgents []string - Auth0Managed []string - MatchRule bool - NoMatchRule bool - } + var inputs networkACLBasicInputs cmd := &cobra.Command{ Use: "update", @@ -842,14 +904,16 @@ To update interactively, use "auth0 network-acl update" with no arguments. To update non-interactively, supply the description, active, priority, and rule through flags. `, Example: ` auth0 network-acl update - auth0 network-acl update --priority 5 + auth0 network-acl update --priority 5 auth0 network-acl update --active true auth0 network-acl update --description "Updated description" auth0 network-acl update --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"]}}' auth0 network-acl update --description "Complex Rule updated" --priority 1 --active true --rule '{"action":{"block":true},"scope":"tenant","match":{"ipv4_cidrs":["192.168.1.0/24"],"geo_country_codes":["US"]}}' - - # Early Access (auth0_managed match/not_match value): + auth0 network-acl update --rule '{"action":{"block":true},"scope":"tenant","match_all":true}' + + # Early Access (auth0_managed and http_message_signature match/not_match value): auth0 network-acl update --rule '{"action":{"allow":true},"scope":"tenant","match":{"auth0_managed":["auth0.low_reputation"]}}' + auth0 network-acl update --rule '{"action":{"allow":true},"scope":"authentication","match":{"http_message_signature":{"keys":[{"id": "key_123"},{"id": "key_456"}]}}}' `, RunE: func(cmd *cobra.Command, args []string) error { // Get the network ACL ID. @@ -862,8 +926,8 @@ To update non-interactively, supply the description, active, priority, and rule } // Check if we're in non-interactive mode (any flags provided). - flagsProvided := cmd.Flags().Changed("description") || cmd.Flags().Changed("active") || - cmd.Flags().Changed("priority") || cmd.Flags().Changed("rule") + flagsProvided := networkACLDescription.IsSet(cmd) || networkACLActive.IsSet(cmd) || + networkACLPriority.IsSet(cmd) || networkACLRule.IsSet(cmd) if !canPrompt(cmd) && !flagsProvided { return fmt.Errorf("in non-interactive mode, at least one field must be specified to update") @@ -872,18 +936,18 @@ To update non-interactively, supply the description, active, priority, and rule // Build patch object with only the fields that should be updated. patch := &management.NetworkACL{} - // Non-interactive mode with flags only - no need to read current ACL. - if !canPrompt(cmd) && flagsProvided { - // Validate and set basic fields from flags. + // When flags are provided, update only those fields. This applies in both + // interactive and non-interactive mode, so there is no need to read the + // current ACL first. + if flagsProvided { if err := validateAndSetBasicFields(&inputs, patch, cmd); err != nil { return err } - // Apply the patch. return applyNetworkACLPatch(cmd.Context(), cli, inputs.ID, patch) } - // Interactive mode - read current ACL first for defaults. + // Full interactive mode - read the current ACL to use its values as defaults. var currentACL *management.NetworkACL err := ansi.Waiting(func() (err error) { currentACL, err = cli.api.NetworkACL.Read(cmd.Context(), inputs.ID) @@ -893,20 +957,11 @@ To update non-interactively, supply the description, active, priority, and rule return fmt.Errorf("failed to get network ACL with ID %q: %w", inputs.ID, err) } - // If some flags were provided in interactive mode, only update those fields. - if canPrompt(cmd) && flagsProvided { - // Only update the fields that were specified via flags. - if err := validateAndSetBasicFields(&inputs, patch, cmd); err != nil { - return err - } - - // Apply the patch. - return applyNetworkACLPatch(cmd.Context(), cli, inputs.ID, patch) + // Use current values as defaults for interactive prompts. + if err := networkACLDescription.Ask(cmd, &inputs.Description, currentACL.Description); err != nil { + return err } - - // Full Interactive mode, use current values as defaults for interactive prompts. - currentDescriptionStr := *currentACL.Description - if err := networkACLDescription.Ask(cmd, &inputs.Description, ¤tDescriptionStr); err != nil { + if err := validateNetworkACLDescription(inputs.Description); err != nil { return err } patch.Description = &inputs.Description @@ -920,17 +975,14 @@ To update non-interactively, supply the description, active, priority, and rule if err := networkACLPriority.AskInt(cmd, &inputs.Priority, ¤tPriorityStr); err != nil { return err } - patch.Priority = &inputs.Priority // Use helper functions for rule configuration. defaults := extractCurrentRuleDefaults(currentACL) - ruleInputs, err := promptForRuleDetails(cmd, cli, defaults, true) if err != nil { return err } - // Build the rule for the patch. patch.Rule, err = buildNetworkACLRule(ruleInputs) if err != nil { @@ -943,24 +995,11 @@ To update non-interactively, supply the description, active, priority, and rule } cmd.Flags().BoolVar(&cli.json, "json", false, "Output in JSON format") - cmd.Flags().StringVarP(&inputs.Description, "description", "d", "", "Description of the network ACL") - cmd.Flags().StringVar(&inputs.ActiveStr, "active", "", "Whether the network ACL is active ('true' or 'false')") - cmd.Flags().IntVarP(&inputs.Priority, "priority", "p", 1, "Priority of the network ACL") - cmd.Flags().StringVar(&inputs.RuleJSON, "rule", "", "Network ACL rule configuration in JSON format") - cmd.Flags().StringVar(&inputs.Action, "action", "", "Action for the rule (block, allow, log, redirect)") - cmd.Flags().StringVar(&inputs.RedirectURI, "redirect-uri", "", "URI to redirect to when action is redirect") - cmd.Flags().StringVar(&inputs.Scope, "scope", "", "Scope of the rule (management, authentication, tenant)") - - // Register the string slice flags. - networkACLASNs.RegisterIntSlice(cmd, &inputs.ASNs, nil) - networkACLCountryCodes.RegisterStringSlice(cmd, &inputs.CountryCodes, nil) - networkACLSubdivisionCodes.RegisterStringSlice(cmd, &inputs.SubdivCodes, nil) - networkACLIPv4CIDRs.RegisterStringSlice(cmd, &inputs.IPv4CIDRs, nil) - networkACLIPv6CIDRs.RegisterStringSlice(cmd, &inputs.IPv6CIDRs, nil) - networkACLJA3Fingerprints.RegisterStringSlice(cmd, &inputs.JA3, nil) - networkACLJA4Fingerprints.RegisterStringSlice(cmd, &inputs.JA4, nil) - networkACLUserAgents.RegisterStringSlice(cmd, &inputs.UserAgents, nil) - networkACLAuth0Managed.RegisterStringSlice(cmd, &inputs.Auth0Managed, nil) + networkACLDescription.RegisterStringU(cmd, &inputs.Description, "") + networkACLActive.RegisterStringU(cmd, &inputs.ActiveStr, "") + networkACLPriority.RegisterIntU(cmd, &inputs.Priority, 1) + networkACLRule.RegisterStringU(cmd, &inputs.RuleJSON, "") + registerDeprecatedRuleFlags(cmd) return cmd } @@ -1080,3 +1119,52 @@ func (c *cli) networkACLPickerOptions(ctx context.Context) (pickerOptions, error return opts, nil } + +const deprecatedRuleFlagMessage = "use `--rule` flag to set the configuration as JSON." + +func registerDeprecatedRuleFlags(cmd *cobra.Command) { + var ( + action string + redirectURI string + scope string + asns []int + countryCodes []string + subdivCodes []string + ipv4CIDRs []string + ipv6CIDRs []string + ja3 []string + ja4 []string + userAgents []string + auth0Managed []string + ) + + networkACLRuleAction.RegisterString(cmd, &action, "") + networkACLRedirectURI.RegisterString(cmd, &redirectURI, "") + networkACLScope.RegisterString(cmd, &scope, "") + networkACLASNs.RegisterIntSlice(cmd, &asns, nil) + networkACLCountryCodes.RegisterStringSlice(cmd, &countryCodes, nil) + networkACLSubdivisionCodes.RegisterStringSlice(cmd, &subdivCodes, nil) + networkACLIPv4CIDRs.RegisterStringSlice(cmd, &ipv4CIDRs, nil) + networkACLIPv6CIDRs.RegisterStringSlice(cmd, &ipv6CIDRs, nil) + networkACLJA3Fingerprints.RegisterStringSlice(cmd, &ja3, nil) + networkACLJA4Fingerprints.RegisterStringSlice(cmd, &ja4, nil) + networkACLUserAgents.RegisterStringSlice(cmd, &userAgents, nil) + networkACLAuth0Managed.RegisterStringSlice(cmd, &auth0Managed, nil) + + for _, f := range []*Flag{ + &networkACLRuleAction, + &networkACLRedirectURI, + &networkACLScope, + &networkACLASNs, + &networkACLCountryCodes, + &networkACLSubdivisionCodes, + &networkACLIPv4CIDRs, + &networkACLIPv6CIDRs, + &networkACLJA3Fingerprints, + &networkACLJA4Fingerprints, + &networkACLUserAgents, + &networkACLAuth0Managed, + } { + f.Deprecate(cmd, deprecatedRuleFlagMessage) + } +} diff --git a/internal/cli/network_acl_test.go b/internal/cli/network_acl_test.go index 8c4e8ed47..8a484ebd4 100644 --- a/internal/cli/network_acl_test.go +++ b/internal/cli/network_acl_test.go @@ -6,10 +6,12 @@ import ( "testing" "github.com/auth0/go-auth0/management" - "go.uber.org/mock/gomock" + "github.com/spf13/cobra" "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" + "github.com/auth0/auth0-cli/internal/auth0" "github.com/auth0/auth0-cli/internal/auth0/mock" ) @@ -177,6 +179,253 @@ func TestBuildNetworkACLRule_Auth0Managed(t *testing.T) { } } +func TestBuildNetworkACLRule_MatchAll(t *testing.T) { + tests := []struct { + name string + inputs *ruleInputs + assertRule func(t testing.TB, rule *management.NetworkACLRule) + expectError bool + }{ + { + name: "match_all block rule sets match_all and skips criteria", + inputs: &ruleInputs{ + Scope: "tenant", + Action: "block", + MatchAll: true, + }, + assertRule: func(t testing.TB, rule *management.NetworkACLRule) { + assert.Nil(t, rule.Match) + assert.Nil(t, rule.NotMatch) + assert.NotNil(t, rule.MatchAll) + assert.True(t, *rule.MatchAll) + assert.NotNil(t, rule.Action.Block) + assert.True(t, *rule.Action.Block) + assert.Equal(t, "tenant", *rule.Scope) + }, + }, + { + name: "match_all ignores any match criteria provided", + inputs: &ruleInputs{ + Scope: "tenant", + Action: "block", + MatchAll: true, + IPv4CIDRs: []string{"192.168.1.0/24"}, + IsMatchRule: true, + }, + assertRule: func(t testing.TB, rule *management.NetworkACLRule) { + assert.Nil(t, rule.Match) + assert.Nil(t, rule.NotMatch) + assert.NotNil(t, rule.MatchAll) + assert.True(t, *rule.MatchAll) + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rule, err := buildNetworkACLRule(test.inputs) + + if test.expectError { + assert.Error(t, err) + return + } + + assert.NoError(t, err) + test.assertRule(t, rule) + }) + } +} + +func TestPromptForRuleDetails_MatchAll(t *testing.T) { + // In tests there is no TTY, so canPrompt is false and every interactive prompt is + // skipped, falling back to the supplied defaults. Seeding MatchAll through the + // defaults confirms it short-circuits before the match/not_match selection and + // criteria prompts, which is the interactive-only path (there is no --match-all flag). + cmd := &cobra.Command{Use: "create"} + cli := &cli{renderer: testRenderer()} + defaults := &ruleDefaults{Scope: "tenant", Action: "block", MatchAll: true} + + inputs, err := promptForRuleDetails(cmd, cli, defaults, false) + assert.NoError(t, err) + assert.True(t, inputs.MatchAll) +} + +func TestExtractCurrentRuleDefaults_MatchAll(t *testing.T) { + tests := []struct { + name string + acl *management.NetworkACL + wantMatchAll bool + }{ + { + name: "extracts match_all when true", + acl: &management.NetworkACL{ + Rule: &management.NetworkACLRule{ + MatchAll: auth0.Bool(true), + }, + }, + wantMatchAll: true, + }, + { + name: "no match_all set", + acl: &management.NetworkACL{ + Rule: &management.NetworkACLRule{ + Match: &management.NetworkACLRuleMatch{ + IPv4Cidrs: &[]string{"192.168.1.0/24"}, + }, + }, + }, + wantMatchAll: false, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + defaults := extractCurrentRuleDefaults(test.acl) + assert.Equal(t, test.wantMatchAll, defaults.MatchAll) + }) + } +} + +func TestBuildNetworkACLRule_HTTPMessageSignature(t *testing.T) { + tests := []struct { + name string + inputs *ruleInputs + assertRule func(t testing.TB, rule *management.NetworkACLRule) + expectError bool + }{ + { + name: "http_message_signature on match", + inputs: &ruleInputs{ + Scope: "authentication", + Action: "block", + SignatureKeyIDs: []string{"key_123", "key_456"}, + IsMatchRule: true, + }, + assertRule: func(t testing.TB, rule *management.NetworkACLRule) { + assert.Nil(t, rule.NotMatch) + assert.NotNil(t, rule.Match) + assert.NotNil(t, rule.Match.HTTPMessageSignature) + assert.Len(t, rule.Match.HTTPMessageSignature.Keys, 2) + assert.Equal(t, "key_123", *rule.Match.HTTPMessageSignature.Keys[0].ID) + assert.Equal(t, "key_456", *rule.Match.HTTPMessageSignature.Keys[1].ID) + }, + }, + { + name: "http_message_signature on not_match", + inputs: &ruleInputs{ + Scope: "authentication", + Action: "block", + SignatureKeyIDs: []string{"key_123"}, + IsMatchRule: false, + }, + assertRule: func(t testing.TB, rule *management.NetworkACLRule) { + assert.Nil(t, rule.Match) + assert.NotNil(t, rule.NotMatch) + assert.NotNil(t, rule.NotMatch.HTTPMessageSignature) + assert.Len(t, rule.NotMatch.HTTPMessageSignature.Keys, 1) + assert.Equal(t, "key_123", *rule.NotMatch.HTTPMessageSignature.Keys[0].ID) + }, + }, + { + name: "http_message_signature coexists with other criteria", + inputs: &ruleInputs{ + Scope: "authentication", + Action: "block", + IPv4CIDRs: []string{"192.168.1.0/24"}, + SignatureKeyIDs: []string{"key_123"}, + IsMatchRule: true, + }, + assertRule: func(t testing.TB, rule *management.NetworkACLRule) { + assert.NotNil(t, rule.Match) + assert.NotNil(t, rule.Match.IPv4Cidrs) + assert.NotNil(t, rule.Match.HTTPMessageSignature) + assert.Len(t, rule.Match.HTTPMessageSignature.Keys, 1) + }, + }, + { + name: "http_message_signature empty is not set", + inputs: &ruleInputs{ + Scope: "authentication", + Action: "block", + IsMatchRule: true, + }, + expectError: true, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + rule, err := buildNetworkACLRule(test.inputs) + + if test.expectError { + assert.Error(t, err) + return + } + + assert.NoError(t, err) + test.assertRule(t, rule) + }) + } +} + +func TestExtractCurrentRuleDefaults_HTTPMessageSignature(t *testing.T) { + tests := []struct { + name string + acl *management.NetworkACL + wantKeys []string + }{ + { + name: "extracts signature key ids from match", + acl: &management.NetworkACL{ + Rule: &management.NetworkACLRule{ + Match: &management.NetworkACLRuleMatch{ + HTTPMessageSignature: &management.NetworkACLHTTPMessageSignature{ + Keys: []*management.NetworkACLHTTPMessageSignatureKey{ + {ID: auth0.String("key_123")}, + {ID: auth0.String("key_456")}, + }, + }, + }, + }, + }, + wantKeys: []string{"key_123", "key_456"}, + }, + { + name: "extracts signature key ids from not_match", + acl: &management.NetworkACL{ + Rule: &management.NetworkACLRule{ + NotMatch: &management.NetworkACLRuleMatch{ + HTTPMessageSignature: &management.NetworkACLHTTPMessageSignature{ + Keys: []*management.NetworkACLHTTPMessageSignatureKey{ + {ID: auth0.String("key_123")}, + }, + }, + }, + }, + }, + wantKeys: []string{"key_123"}, + }, + { + name: "no signature keys set", + acl: &management.NetworkACL{ + Rule: &management.NetworkACLRule{ + Match: &management.NetworkACLRuleMatch{ + IPv4Cidrs: &[]string{"192.168.1.0/24"}, + }, + }, + }, + wantKeys: nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + defaults := extractCurrentRuleDefaults(test.acl) + assert.Equal(t, test.wantKeys, defaults.SignatureKeyIDs) + }) + } +} + func TestExtractCurrentRuleDefaults_Auth0Managed(t *testing.T) { tests := []struct { name string diff --git a/internal/display/network_acl.go b/internal/display/network_acl.go index 70d238c31..c50e78fe0 100644 --- a/internal/display/network_acl.go +++ b/internal/display/network_acl.go @@ -61,6 +61,11 @@ func (v *networkACLView) KeyValues() [][]string { keyValues = append(keyValues, []string{"REDIRECT URI", *acl.Rule.Action.RedirectURI}) } + // Add match_all if set (unconditional rule, mutually exclusive with match/not_match). + if acl.Rule.MatchAll != nil && *acl.Rule.MatchAll { + keyValues = append(keyValues, []string{"MATCH ALL", "true"}) + } + // Add match criteria if present. if acl.Rule.Match != nil { match := acl.Rule.Match @@ -104,6 +109,10 @@ func (v *networkACLView) KeyValues() [][]string { if match.Auth0Managed != nil && len(*match.Auth0Managed) > 0 { keyValues = append(keyValues, []string{"AUTH0 MANAGED", strings.Join(*match.Auth0Managed, ", ")}) } + + if ids := httpMessageSignatureKeyIDs(match); len(ids) > 0 { + keyValues = append(keyValues, []string{"SIGNATURE KEY IDS", strings.Join(ids, ", ")}) + } } // Add not_match criteria if present. @@ -149,12 +158,33 @@ func (v *networkACLView) KeyValues() [][]string { if notMatch.Auth0Managed != nil && len(*notMatch.Auth0Managed) > 0 { keyValues = append(keyValues, []string{"NOT AUTH0 MANAGED", strings.Join(*notMatch.Auth0Managed, ", ")}) } + + if ids := httpMessageSignatureKeyIDs(notMatch); len(ids) > 0 { + keyValues = append(keyValues, []string{"NOT SIGNATURE KEY IDS", strings.Join(ids, ", ")}) + } } } return keyValues } +// httpMessageSignatureKeyIDs returns the signing key IDs referenced by a rule's +// http_message_signature signal, or nil when the signal is absent. +func httpMessageSignatureKeyIDs(match *management.NetworkACLRuleMatch) []string { + if match == nil || match.HTTPMessageSignature == nil { + return nil + } + + ids := make([]string, 0, len(match.HTTPMessageSignature.Keys)) + for _, k := range match.HTTPMessageSignature.Keys { + if k.ID != nil { + ids = append(ids, *k.ID) + } + } + + return ids +} + func (v *networkACLView) Object() interface{} { return v.raw } diff --git a/internal/display/network_acl_test.go b/internal/display/network_acl_test.go index 561a739e3..d6948a808 100644 --- a/internal/display/network_acl_test.go +++ b/internal/display/network_acl_test.go @@ -80,6 +80,92 @@ func TestNetworkACLView_KeyValues_Auth0Managed(t *testing.T) { } } +func TestNetworkACLView_KeyValues_MatchAll(t *testing.T) { + acl := &management.NetworkACL{ + ID: strPtr("acl-match-all"), + Description: strPtr("Deny All"), + Priority: intPtr(99), + Active: boolPtr(true), + Rule: &management.NetworkACLRule{ + Scope: strPtr("tenant"), + Action: &management.NetworkACLRuleAction{Block: boolPtr(true)}, + MatchAll: boolPtr(true), + }, + } + + kvs := makeNetworkACLView(acl).KeyValues() + + value, ok := keyValue(kvs, "MATCH ALL") + assert.True(t, ok, "expected key \"MATCH ALL\" to be present in KeyValues()") + assert.Equal(t, "true", value) +} + +func TestNetworkACLView_KeyValues_HTTPMessageSignature(t *testing.T) { + tests := []struct { + name string + acl *management.NetworkACL + wantKey string + wantValue string + }{ + { + name: "http_message_signature on match", + acl: &management.NetworkACL{ + ID: strPtr("acl-1"), + Description: strPtr("Only Signed"), + Priority: intPtr(1), + Active: boolPtr(true), + Rule: &management.NetworkACLRule{ + Scope: strPtr("authentication"), + Action: &management.NetworkACLRuleAction{Block: boolPtr(true)}, + Match: &management.NetworkACLRuleMatch{ + HTTPMessageSignature: &management.NetworkACLHTTPMessageSignature{ + Keys: []*management.NetworkACLHTTPMessageSignatureKey{ + {ID: strPtr("key_123")}, + {ID: strPtr("key_456")}, + }, + }, + }, + }, + }, + wantKey: "SIGNATURE KEY IDS", + wantValue: "key_123, key_456", + }, + { + name: "http_message_signature on not_match", + acl: &management.NetworkACL{ + ID: strPtr("acl-2"), + Description: strPtr("Reject Signed"), + Priority: intPtr(2), + Active: boolPtr(true), + Rule: &management.NetworkACLRule{ + Scope: strPtr("authentication"), + Action: &management.NetworkACLRuleAction{Block: boolPtr(true)}, + NotMatch: &management.NetworkACLRuleMatch{ + HTTPMessageSignature: &management.NetworkACLHTTPMessageSignature{ + Keys: []*management.NetworkACLHTTPMessageSignatureKey{ + {ID: strPtr("key_123")}, + }, + }, + }, + }, + }, + wantKey: "NOT SIGNATURE KEY IDS", + wantValue: "key_123", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + view := makeNetworkACLView(test.acl) + kvs := view.KeyValues() + + value, ok := keyValue(kvs, test.wantKey) + assert.True(t, ok, "expected key %q to be present in KeyValues()", test.wantKey) + assert.Equal(t, test.wantValue, value) + }) + } +} + // TestNetworkACLView_Object_IncludesID guards against a regression where storing // a *management.NetworkACL in the view's raw field engaged that type's pointer // receiver MarshalJSON, which emits only the writable subset of fields and drops diff --git a/internal/prompt/prompt.go b/internal/prompt/prompt.go index 1cc8e53ab..cbd7a85c2 100644 --- a/internal/prompt/prompt.go +++ b/internal/prompt/prompt.go @@ -35,6 +35,17 @@ func AskMultiSelect(message string, response interface{}, options ...string) err return err } +// AskMultiSelectWithDefault is AskMultiSelect with the given default options pre-selected. +func AskMultiSelectWithDefault(message string, response interface{}, defaults []string, options ...string) error { + prompt := &survey.MultiSelect{ + Message: message, + Options: options, + Default: defaults, + } + + return askOne(prompt, response) +} + func AskBool(message string, value *bool, defaultValue bool) error { *value = defaultValue prompt := &survey.Confirm{ diff --git a/test/integration/network-acl-test-cases.yaml b/test/integration/network-acl-test-cases.yaml index 523a8d700..8c331a705 100644 --- a/test/integration/network-acl-test-cases.yaml +++ b/test/integration/network-acl-test-cases.yaml @@ -99,10 +99,22 @@ tests: rule.action.block: "true" rule.not_match.ipv4_cidrs: "[10.0.0.0/8]" - 010 - delete network ACL: + 010 - create network ACL with match_all deny-all rule: + command: auth0 network-acl create --description "Integration Test ACL Match All" --active false --priority 6 --rule '{"action":{"block":true},"scope":"tenant","match_all":true}' --json --no-input + exit-code: 0 + stdout: + json: + description: "Integration Test ACL Match All" + active: "false" + priority: "6" + rule.scope: "tenant" + rule.action.block: "true" + rule.match_all: "true" + + 011 - delete network ACL: command: auth0 network-acl delete $(./test/integration/scripts/get-network-acl-id.sh) --force --no-input exit-code: 0 - 011 - delete all network ACLs: + 012 - delete all network ACLs: command: auth0 network-acl delete --all --force --no-input exit-code: 0