diff --git a/.docker/Dockerfile-alpine b/.docker/Dockerfile-alpine index ab5d3757..96bdd1da 100644 --- a/.docker/Dockerfile-alpine +++ b/.docker/Dockerfile-alpine @@ -1,4 +1,4 @@ -FROM alpine:3.15 +FROM alpine:3.18.4 RUN addgroup -S ory; \ adduser -S ory -G ory -D -h /home/ory -s /bin/nologin; \ diff --git a/.docker/Dockerfile-build b/.docker/Dockerfile-build index 56d9931a..95e4c0e5 100644 --- a/.docker/Dockerfile-build +++ b/.docker/Dockerfile-build @@ -1,4 +1,4 @@ -FROM golang:1.19-alpine3.16 AS builder +FROM golang:1.21-alpine3.18 AS builder RUN apk -U --no-cache add build-base git gcc bash diff --git a/Makefile b/Makefile index c337e77e..4f1271cb 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ export GO111MODULE := on export PATH := .bin:${PATH} export PWD := $(shell pwd) -GOLANGCI_LINT_VERSION = 1.48.0 +GOLANGCI_LINT_VERSION = 1.55.2 GO_DEPENDENCIES = github.com/ory/go-acc \ github.com/golang/mock/mockgen \ @@ -72,7 +72,6 @@ licenses: .bin/licenses node_modules # checks open-source licenses docker: docker build -f .docker/Dockerfile-build -t oryd/ory:latest-sqlite . - # Runs tests in short mode, without database adapters .PHONY: post-release post-release: diff --git a/cmd/cloudx/accountexperience/accountexperience_test.go b/cmd/cloudx/accountexperience/accountexperience_test.go index 7c097ffe..4803c371 100644 --- a/cmd/cloudx/accountexperience/accountexperience_test.go +++ b/cmd/cloudx/accountexperience/accountexperience_test.go @@ -7,14 +7,9 @@ import ( "testing" "github.com/stretchr/testify/require" - - "github.com/ory/cli/cmd/cloudx/testhelpers" ) -var _, _, _, _, defaultProject, defaultCmd = testhelpers.CreateDefaultAssets() - func TestOpenAXPages(t *testing.T) { - t.Run("is able to open login page", func(t *testing.T) { var pages = [5]string{"login", "registration", "recovery", "verification", "settings"} for _, p := range pages { diff --git a/cmd/cloudx/accountexperience/main_test.go b/cmd/cloudx/accountexperience/main_test.go new file mode 100644 index 00000000..7102c39e --- /dev/null +++ b/cmd/cloudx/accountexperience/main_test.go @@ -0,0 +1,21 @@ +// Copyright © 2023 Ory Corp +// SPDX-License-Identifier: Apache-2.0 + +package accountexperience_test + +import ( + "testing" + + "github.com/ory/cli/cmd/cloudx/testhelpers" + "github.com/ory/x/cmdx" +) + +var ( + defaultProject, defaultConfig, defaultEmail, defaultPassword string + defaultCmd *cmdx.CommandExecuter +) + +func TestMain(m *testing.M) { + defaultConfig, defaultEmail, defaultPassword, _, defaultProject, defaultCmd = testhelpers.CreateDefaultAssets() + testhelpers.RunAgainstStaging(m) +} diff --git a/cmd/cloudx/auth_test.go b/cmd/cloudx/auth_test.go index 1b693d4a..779b2d5f 100644 --- a/cmd/cloudx/auth_test.go +++ b/cmd/cloudx/auth_test.go @@ -117,7 +117,7 @@ func TestAuthenticator(t *testing.T) { c, err := client.NewKratosClient() require.NoError(t, err) - flow, _, err := c.FrontendApi.CreateNativeSettingsFlow(context.Background()).XSessionToken(ac.SessionToken).Execute() + flow, _, err := c.FrontendAPI.CreateNativeSettingsFlow(context.Background()).XSessionToken(ac.SessionToken).Execute() require.NoError(t, err) var secret string @@ -136,7 +136,7 @@ func TestAuthenticator(t *testing.T) { code, err := totp.GenerateCode(secret, time.Now()) require.NoError(t, err) - _, _, err = c.FrontendApi.UpdateSettingsFlow(context.Background()).XSessionToken(ac.SessionToken).Flow(flow.Id).UpdateSettingsFlowBody(cloud.UpdateSettingsFlowBody{ + _, _, err = c.FrontendAPI.UpdateSettingsFlow(context.Background()).XSessionToken(ac.SessionToken).Flow(flow.Id).UpdateSettingsFlowBody(cloud.UpdateSettingsFlowBody{ UpdateSettingsFlowWithTotpMethod: &cloud.UpdateSettingsFlowWithTotpMethod{ TotpCode: pointerx.String(code), Method: "totp", diff --git a/cmd/cloudx/client/form.go b/cmd/cloudx/client/form.go index 238a03d7..79c82886 100644 --- a/cmd/cloudx/client/form.go +++ b/cmd/cloudx/client/form.go @@ -61,6 +61,11 @@ func renderForm(stdin *bufio.Reader, pwReader passwordReader, stderr io.Writer, continue } + // Skip details like Company, Phone, etc. + if strings.HasPrefix(attrs.Name, "traits.details") { + continue + } + if attrs.Name == "traits.consent.tos" { for { ok, err := cmdx.AskScannerForConfirmation(getLabel(attrs, &node), stdin, stderr) diff --git a/cmd/cloudx/client/handler.go b/cmd/cloudx/client/handler.go index fcd43d9a..dfc8f83e 100644 --- a/cmd/cloudx/client/handler.go +++ b/cmd/cloudx/client/handler.go @@ -232,7 +232,7 @@ func (h *CommandHelper) HasValidContext() (*AuthContext, bool, error) { return nil, false, err } - sess, _, err := client.FrontendApi.ToSession(h.Ctx).XSessionToken(c.SessionToken).Execute() + sess, _, err := client.FrontendAPI.ToSession(h.Ctx).XSessionToken(c.SessionToken).Execute() if err != nil { return nil, false, nil } else if sess == nil { @@ -282,7 +282,7 @@ func (h *CommandHelper) getField(i interface{}, path string) (*gjson.Result, err } func (h *CommandHelper) signup(c *cloud.APIClient) (*AuthContext, error) { - flow, _, err := c.FrontendApi.CreateNativeRegistrationFlow(h.Ctx).Execute() + flow, _, err := c.FrontendAPI.CreateNativeRegistrationFlow(h.Ctx).Execute() if err != nil { return nil, err } @@ -299,7 +299,7 @@ retryRegistration: return nil, err } - signup, _, err := c.FrontendApi.UpdateRegistrationFlow(h.Ctx). + signup, _, err := c.FrontendAPI.UpdateRegistrationFlow(h.Ctx). Flow(flow.Id).UpdateRegistrationFlowBody(cloud.UpdateRegistrationFlowBody{ UpdateRegistrationFlowWithPasswordMethod: &form, }).Execute() @@ -319,7 +319,7 @@ retryRegistration: } sessionToken := *signup.SessionToken - sess, _, err := c.FrontendApi.ToSession(h.Ctx).XSessionToken(sessionToken).Execute() + sess, _, err := c.FrontendAPI.ToSession(h.Ctx).XSessionToken(sessionToken).Execute() if err != nil { return nil, err } @@ -328,7 +328,7 @@ retryRegistration: } func (h *CommandHelper) signin(c *cloud.APIClient, sessionToken string) (*AuthContext, error) { - req := c.FrontendApi.CreateNativeLoginFlow(h.Ctx) + req := c.FrontendAPI.CreateNativeLoginFlow(h.Ctx) if len(sessionToken) > 0 { req = req.XSessionToken(sessionToken).Aal("aal2") } @@ -382,7 +382,7 @@ retryLogin: panic("unexpected type") } - login, _, err := c.FrontendApi.UpdateLoginFlow(h.Ctx).XSessionToken(sessionToken). + login, _, err := c.FrontendAPI.UpdateLoginFlow(h.Ctx).XSessionToken(sessionToken). Flow(flow.Id).UpdateLoginFlowBody(body).Execute() if err != nil { if e, ok := err.(*cloud.GenericOpenAPIError); ok { @@ -400,7 +400,7 @@ retryLogin: } sessionToken = stringsx.Coalesce(*login.SessionToken, sessionToken) - sess, _, err := c.FrontendApi.ToSession(h.Ctx).XSessionToken(sessionToken).Execute() + sess, _, err := c.FrontendAPI.ToSession(h.Ctx).XSessionToken(sessionToken).Execute() if err == nil { return h.sessionToContext(sess, sessionToken) } @@ -510,7 +510,7 @@ func (h *CommandHelper) ListProjects() ([]cloud.ProjectMetadata, error) { return nil, err } - projects, res, err := c.ProjectApi.ListProjects(h.Ctx).Execute() + projects, res, err := c.ProjectAPI.ListProjects(h.Ctx).Execute() if err != nil { return nil, handleError("unable to list projects", res, err) } @@ -555,7 +555,7 @@ func (h *CommandHelper) GetProject(projectOrSlug string) (*cloud.Project, error) } } - project, res, err := c.ProjectApi.GetProject(h.Ctx, id.String()).Execute() + project, res, err := c.ProjectAPI.GetProject(h.Ctx, id.String()).Execute() if err != nil { return nil, handleError("unable to get project", res, err) } @@ -574,7 +574,7 @@ func (h *CommandHelper) CreateProject(name string, setDefault bool) (*cloud.Proj return nil, err } - project, res, err := c.ProjectApi.CreateProject(h.Ctx).CreateProjectBody(*cloud.NewCreateProjectBody(strings.TrimSpace(name))).Execute() + project, res, err := c.ProjectAPI.CreateProject(h.Ctx).CreateProjectBody(*cloud.NewCreateProjectBody(strings.TrimSpace(name))).Execute() if err != nil { return nil, handleError("unable to list projects", res, err) } @@ -666,7 +666,7 @@ func (h *CommandHelper) PatchProject(id string, raw []json.RawMessage, add, repl patches = append(patches, cloud.JsonPatch{Op: "remove", Path: del}) } - res, _, err := c.ProjectApi.PatchProject(h.Ctx, id).JsonPatch(patches).Execute() + res, _, err := c.ProjectAPI.PatchProject(h.Ctx, id).JsonPatch(patches).Execute() if err != nil { return nil, err } @@ -730,14 +730,14 @@ func (h *CommandHelper) UpdateProject(id string, name string, configs []json.Raw if name != "" { payload.Name = name } else if payload.Name == "" { - res, _, err := c.ProjectApi.GetProject(h.Ctx, id).Execute() + res, _, err := c.ProjectAPI.GetProject(h.Ctx, id).Execute() if err != nil { return nil, errors.WithStack(err) } payload.Name = res.Name } - res, _, err := c.ProjectApi.SetProject(h.Ctx, id).SetProject(payload).Execute() + res, _, err := c.ProjectAPI.SetProject(h.Ctx, id).SetProject(payload).Execute() if err != nil { return nil, err } @@ -756,7 +756,7 @@ func (h *CommandHelper) CreateAPIKey(projectIdOrSlug, name string) (*cloud.Proje return nil, err } - token, _, err := c.ProjectApi.CreateProjectApiKey(h.Ctx, projectIdOrSlug).CreateProjectApiKeyRequest(cloud.CreateProjectApiKeyRequest{Name: name}).Execute() + token, _, err := c.ProjectAPI.CreateProjectApiKey(h.Ctx, projectIdOrSlug).CreateProjectApiKeyRequest(cloud.CreateProjectApiKeyRequest{Name: name}).Execute() if err != nil { return nil, err } @@ -775,7 +775,7 @@ func (h *CommandHelper) DeleteAPIKey(projectIdOrSlug, id string) error { return err } - if _, err := c.ProjectApi.DeleteProjectApiKey(h.Ctx, projectIdOrSlug, id).Execute(); err != nil { + if _, err := c.ProjectAPI.DeleteProjectApiKey(h.Ctx, projectIdOrSlug, id).Execute(); err != nil { return err } diff --git a/cmd/cloudx/client/main_test.go b/cmd/cloudx/client/main_test.go new file mode 100644 index 00000000..3e1f15bc --- /dev/null +++ b/cmd/cloudx/client/main_test.go @@ -0,0 +1,21 @@ +// Copyright © 2023 Ory Corp +// SPDX-License-Identifier: Apache-2.0 + +package client_test + +import ( + "testing" + + "github.com/ory/cli/cmd/cloudx/testhelpers" + "github.com/ory/x/cmdx" +) + +var ( + defaultProject, defaultConfig, defaultEmail, defaultPassword string + defaultCmd *cmdx.CommandExecuter +) + +func TestMain(m *testing.M) { + defaultConfig, defaultEmail, defaultPassword, _, defaultProject, defaultCmd = testhelpers.CreateDefaultAssets() + testhelpers.RunAgainstStaging(m) +} diff --git a/cmd/cloudx/project/.snapshots/TestUpdateProject-target=project-is_able_to_update_a_project.json b/cmd/cloudx/project/.snapshots/TestUpdateProject-target=project-is_able_to_update_a_project.json index bed45d3f..479e925f 100644 --- a/cmd/cloudx/project/.snapshots/TestUpdateProject-target=project-is_able_to_update_a_project.json +++ b/cmd/cloudx/project/.snapshots/TestUpdateProject-target=project-is_able_to_update_a_project.json @@ -1,9 +1,20 @@ { + "cors_admin": { + "enabled": false, + "origins": [] + }, + "cors_public": { + "enabled": false, + "origins": [] + }, + "id": "5a19c8c7-ba24-85b9-9101-08883de15032", "name": "ory-cy-e2e-da2f162d-af61-42dd-90dc-e3fcfa7c84a0-Updated Project from JSON", + "revision_id": "44ffba1c-d9de-4449-b6be-4f17e8cf8904", "services": { "identity": { "config": { "cookies": { + "domain": "epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev", "path": "/", "same_site": "Lax" }, @@ -12,6 +23,13 @@ "from_name": "ory-cy-e2e-da2f162d-af61-42dd-90dc-e3fcfa7c84a0-Updated Project from JSON via Ory" }, "templates": { + "login_code": { + "valid": { + "email": { + "body": {} + } + } + }, "recovery": { "invalid": { "email": { @@ -36,6 +54,13 @@ } } }, + "registration_code": { + "valid": { + "email": { + "body": {} + } + } + }, "verification": { "invalid": { "email": { @@ -73,20 +98,25 @@ "url": "base64://ewogICIkaWQiOiAiaHR0cHM6Ly9zY2hlbWFzLm9yeS5zaC9wcmVzZXRzL2tyYXRvcy9pZGVudGl0eS51c2VybmFtZS5zY2hlbWEuanNvbiIsCiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIiwKICAidGl0bGUiOiAiUGVyc29uIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgInRyYWl0cyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgInVzZXJuYW1lIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJ0aXRsZSI6ICJVc2VybmFtZSIsCiAgICAgICAgICAibWF4TGVuZ3RoIjogMTAwLAogICAgICAgICAgIm9yeS5zaC9rcmF0b3MiOiB7CiAgICAgICAgICAgICJjcmVkZW50aWFscyI6IHsKICAgICAgICAgICAgICAicGFzc3dvcmQiOiB7CiAgICAgICAgICAgICAgICAiaWRlbnRpZmllciI6IHRydWUKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJ3ZWJhdXRobiI6IHsKICAgICAgICAgICAgICAgICJpZGVudGlmaWVyIjogdHJ1ZQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgInRvdHAiOiB7CiAgICAgICAgICAgICAgICAiYWNjb3VudF9uYW1lIjogdHJ1ZQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICJ1c2VybmFtZSIKICAgICAgXSwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogZmFsc2UKICAgIH0KICB9Cn0K" }, { - "id": "beb7e08859084ec71bc073694fff7c71eb0eb82593ca11b29068c1e02ad385c4fb8451cb3b58d8c9385ed955f31ab51b6d94e187ffea8d9ba817c12782ef5782" + "id": "beb7e08859084ec71bc073694fff7c71eb0eb82593ca11b29068c1e02ad385c4fb8451cb3b58d8c9385ed955f31ab51b6d94e187ffea8d9ba817c12782ef5782", + "url": "https://storage.googleapis.com/bac-gcs-staging/beb7e08859084ec71bc073694fff7c71eb0eb82593ca11b29068c1e02ad385c4fb8451cb3b58d8c9385ed955f31ab51b6d94e187ffea8d9ba817c12782ef5782.json" }, { "id": "preset://email", - "url": "base64://ewogICIkaWQiOiAiaHR0cHM6Ly9zY2hlbWFzLm9yeS5zaC9wcmVzZXRzL2tyYXRvcy9pZGVudGl0eS5lbWFpbC5zY2hlbWEuanNvbiIsCiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIiwKICAidGl0bGUiOiAiUGVyc29uIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgInRyYWl0cyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgImVtYWlsIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJmb3JtYXQiOiAiZW1haWwiLAogICAgICAgICAgInRpdGxlIjogIkUtTWFpbCIsCiAgICAgICAgICAib3J5LnNoL2tyYXRvcyI6IHsKICAgICAgICAgICAgImNyZWRlbnRpYWxzIjogewogICAgICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgICAgICJpZGVudGlmaWVyIjogdHJ1ZQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIndlYmF1dGhuIjogewogICAgICAgICAgICAgICAgImlkZW50aWZpZXIiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAidG90cCI6IHsKICAgICAgICAgICAgICAgICJhY2NvdW50X25hbWUiOiB0cnVlCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVjb3ZlcnkiOiB7CiAgICAgICAgICAgICAgInZpYSI6ICJlbWFpbCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInZlcmlmaWNhdGlvbiI6IHsKICAgICAgICAgICAgICAidmlhIjogImVtYWlsIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIm1heExlbmd0aCI6IDMyMAogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICJlbWFpbCIKICAgICAgXSwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogZmFsc2UKICAgIH0KICB9Cn0K" + "url": "base64://ewogICIkaWQiOiAiaHR0cHM6Ly9zY2hlbWFzLm9yeS5zaC9wcmVzZXRzL2tyYXRvcy9pZGVudGl0eS5lbWFpbC5zY2hlbWEuanNvbiIsCiAgIiRzY2hlbWEiOiAiaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIiwKICAidGl0bGUiOiAiUGVyc29uIiwKICAidHlwZSI6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIjogewogICAgInRyYWl0cyI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgImVtYWlsIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJmb3JtYXQiOiAiZW1haWwiLAogICAgICAgICAgInRpdGxlIjogIkUtTWFpbCIsCiAgICAgICAgICAib3J5LnNoL2tyYXRvcyI6IHsKICAgICAgICAgICAgImNyZWRlbnRpYWxzIjogewogICAgICAgICAgICAgICJwYXNzd29yZCI6IHsKICAgICAgICAgICAgICAgICJpZGVudGlmaWVyIjogdHJ1ZQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIndlYmF1dGhuIjogewogICAgICAgICAgICAgICAgImlkZW50aWZpZXIiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAidG90cCI6IHsKICAgICAgICAgICAgICAgICJhY2NvdW50X25hbWUiOiB0cnVlCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAiY29kZSI6IHsKICAgICAgICAgICAgICAgICJpZGVudGlmaWVyIjogdHJ1ZSwKICAgICAgICAgICAgICAgICJ2aWEiOiAiZW1haWwiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVjb3ZlcnkiOiB7CiAgICAgICAgICAgICAgInZpYSI6ICJlbWFpbCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInZlcmlmaWNhdGlvbiI6IHsKICAgICAgICAgICAgICAidmlhIjogImVtYWlsIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIm1heExlbmd0aCI6IDMyMAogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIjogWwogICAgICAgICJlbWFpbCIKICAgICAgXSwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogZmFsc2UKICAgIH0KICB9Cn0K" } ] }, "oauth2_provider": { "override_return_to": false }, + "organizations": [], + "preview": { + "default_read_consistency_level": "strong" + }, "selfservice": { "allowed_return_urls": [ - + "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev" ], "default_browser_return_url": "/ui/welcome", "flows": { @@ -95,13 +125,22 @@ }, "login": { "after": { + "code": { + "hooks": [] + }, "hooks": [], + "lookup_secret": { + "hooks": [] + }, "oidc": { "hooks": [] }, "password": { "hooks": [] }, + "totp": { + "hooks": [] + }, "webauthn": { "hooks": [] } @@ -130,6 +169,9 @@ }, "registration": { "after": { + "code": { + "hooks": [] + }, "hooks": [], "oidc": { "hooks": [ @@ -158,16 +200,29 @@ }, "enabled": true, "lifespan": "30m0s", + "login_hints": true, "ui_url": "/ui/registration" }, "settings": { "after": { "hooks": [], + "lookup_secret": { + "hooks": [] + }, + "oidc": { + "hooks": [] + }, "password": { "hooks": [] }, "profile": { "hooks": [] + }, + "totp": { + "hooks": [] + }, + "webauthn": { + "hooks": [] } }, "before": { @@ -197,7 +252,8 @@ "config": { "lifespan": "15m0s" }, - "enabled": true + "enabled": true, + "passwordless_enabled": false }, "link": { "config": { @@ -240,7 +296,9 @@ "rp": { "display_name": "afds", "id": "upbeat-mclean-xjvqxk4i7e.projects.oryapis", - "origin": "https://upbeat-mclean-xjvqxk4i7e.projects.oryapis" + "origins": [ + "https://upbeat-mclean-xjvqxk4i7e.projects.oryapis" + ] } }, "enabled": false @@ -249,11 +307,13 @@ }, "serve": { "admin": { + "base_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/", "request_log": { "disable_for_health": true } }, "public": { + "base_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/", "cors": { "enabled": false }, @@ -264,13 +324,18 @@ }, "session": { "cookie": { + "domain": "epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev", + "name": "ory_session_epictereshkova372r7kgjfc", "path": "/", "persistent": false, "same_site": "Lax" }, "lifespan": "72h0m0s", "whoami": { - "required_aal": "aal1" + "required_aal": "aal1", + "tokenizer": { + "templates": {} + } } } } @@ -360,6 +425,12 @@ } }, "cookies": { + "domain": "epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev", + "names": { + "consent_csrf": "ory_oauth2_consent_csrf_epictereshkova372r7kgjfc", + "login_csrf": "ory_oauth2_login_csrf_epictereshkova372r7kgjfc", + "session_csrf": "ory_oauth2_session_csrf_epictereshkova372r7kgjfc" + }, "same_site_legacy_workaround": false, "same_site_mode": "Lax", "secure": true @@ -423,19 +494,27 @@ "error": "/ui/error", "login": "/ui/login", "logout": "/ui/logout", - "post_logout_redirect": "/oauth2/fallbacks/logout" + "post_logout_redirect": "/oauth2/fallbacks/logout", + "registration": "/ui/registration", + "self": { + "admin": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/admin", + "issuer": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev", + "public": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev" + } }, "webfinger": { "jwks": {}, - "oidc_discovery": {} + "oidc_discovery": { + "auth_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/oauth2/auth", + "jwks_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/.well-known/jwks.json", + "token_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/oauth2/token", + "userinfo_url": "https://epic-tereshkova-372r7kgjfc.projects.staging.oryapis.dev/userinfo" + } } } }, "permission": { "config": { - "limit": { - "max_read_depth": 3 - }, "namespaces": [ { "id": 1, @@ -445,5 +524,7 @@ } } }, - "state": "running" + "slug": "epic-tereshkova-372r7kgjfc", + "state": "running", + "AdditionalProperties": {} } diff --git a/cmd/cloudx/project/fixtures/update/fail/config.json b/cmd/cloudx/project/fixtures/update/fail/config.json index 4cda08a5..03079365 100644 --- a/cmd/cloudx/project/fixtures/update/fail/config.json +++ b/cmd/cloudx/project/fixtures/update/fail/config.json @@ -46,5 +46,13 @@ } } }, + "cors_public": { + "enabled": false, + "origins": [] + }, + "cors_admin": { + "enabled": false, + "origins": [] + }, "name": "Updated Project from JSON" } diff --git a/cmd/cloudx/project/fixtures/update/json/config.json b/cmd/cloudx/project/fixtures/update/json/config.json index 1c40d655..a45cd284 100644 --- a/cmd/cloudx/project/fixtures/update/json/config.json +++ b/cmd/cloudx/project/fixtures/update/json/config.json @@ -449,5 +449,13 @@ } } }, + "cors_public": { + "enabled": false, + "origins": [] + }, + "cors_admin": { + "enabled": false, + "origins": [] + }, "name": "ory-cy-e2e-da2f162d-af61-42dd-90dc-e3fcfa7c84a0-Updated Project from JSON" } diff --git a/cmd/cloudx/project/update_test.go b/cmd/cloudx/project/update_test.go index fb740431..8c281194 100644 --- a/cmd/cloudx/project/update_test.go +++ b/cmd/cloudx/project/update_test.go @@ -12,22 +12,10 @@ import ( "github.com/stretchr/testify/require" "github.com/ory/cli/cmd/cloudx/testhelpers" - "github.com/ory/x/assertx" "github.com/ory/x/cmdx" "github.com/ory/x/snapshotx" ) -var ( - //go:embed fixtures/update/json/config.json - fixtureProject json.RawMessage - //go:embed fixtures/update-kratos/json/config.json - fixtureKratosConfig json.RawMessage - //go:embed fixtures/update-keto/json/config.json - fixtureKetoConfig json.RawMessage - //go:embed fixtures/update-hydra/json/config.json - fixtureHydraConfig json.RawMessage -) - func TestUpdateProject(t *testing.T) { project := testhelpers.CreateProject(t, defaultConfig) @@ -43,28 +31,24 @@ func TestUpdateProject(t *testing.T) { pathSuccess: "fixtures/update/json/config.json", pathFailure: "fixtures/update/fail/config.json", failureContains: "minimum 1 items allowed", - fixture: fixtureProject, }, { subcommand: "identity-config", pathSuccess: "fixtures/update-kratos/json/config.json", pathFailure: "fixtures/update-kratos/fail/config.json", failureContains: "minimum 1 items allowed", - fixture: fixtureKratosConfig, }, { subcommand: "permission-config", pathSuccess: "fixtures/update-keto/json/config.json", pathFailure: "fixtures/update-keto/fail/config.json", failureContains: "cannot unmarshal string into Go struct field", - fixture: fixtureKetoConfig, }, { subcommand: "oauth2-config", pathSuccess: "fixtures/update-hydra/json/config.json", pathFailure: "fixtures/update-hydra/fail/config.json", failureContains: "cannot unmarshal number into Go struct field", - fixture: fixtureHydraConfig, }, } { t.Run("target="+tc.subcommand, func(t *testing.T) { @@ -72,7 +56,7 @@ func TestUpdateProject(t *testing.T) { stdout, _, err := defaultCmd.Exec(nil, "update", tc.subcommand, project, "--format", "json", "--file", tc.pathSuccess) require.NoError(t, err) - assertx.EqualAsJSONExcept(t, tc.fixture, json.RawMessage(stdout), []string{ + snapshotx.SnapshotT(t, json.RawMessage(stdout), snapshotx.ExceptPaths( // for project cmd "id", "revision_id", @@ -102,35 +86,6 @@ func TestUpdateProject(t *testing.T) { "serve.cookies.names", "serve.cookies.domain", "urls.self", - }) - - snapshotx.SnapshotT(t, json.RawMessage(stdout), snapshotx.ExceptPaths( - // for project cmd - "id", - "revision_id", - "slug", - "services.identity.config.serve.public.base_url", - "services.identity.config.serve.admin.base_url", - "services.identity.config.session.cookie.domain", - "services.identity.config.session.cookie.name", - "services.identity.config.cookies.domain", - "services.identity.config.selfservice.allowed_return_urls.0", - "services.oauth2.config.serve.cookies.names", - "services.oauth2.config.serve.cookies.domain", - "services.oauth2.config.urls.self", - // for kratos cmd - "serve.public.base_url", - "serve.admin.base_url", - "session.cookie.domain", - "session.cookie.name", - "cookies.domain", - "courier.smtp.from_name", - "selfservice.allowed_return_urls.0", - // for keto cmd - // for hydra cmd - "serve.cookies.names", - "serve.cookies.domain", - "urls.self", // bucket changes locally vs staging "services.identity.config.identity.schemas.1.url", "identity.schemas.1.url", diff --git a/cmd/cloudx/proxy/main_test.go b/cmd/cloudx/proxy/main_test.go new file mode 100644 index 00000000..307aee91 --- /dev/null +++ b/cmd/cloudx/proxy/main_test.go @@ -0,0 +1,21 @@ +// Copyright © 2023 Ory Corp +// SPDX-License-Identifier: Apache-2.0 + +package proxy_test + +import ( + "testing" + + "github.com/ory/cli/cmd/cloudx/testhelpers" + "github.com/ory/x/cmdx" +) + +var ( + defaultProject, defaultConfig, defaultEmail, defaultPassword string + defaultCmd *cmdx.CommandExecuter +) + +func TestMain(m *testing.M) { + defaultConfig, defaultEmail, defaultPassword, _, defaultProject, defaultCmd = testhelpers.CreateDefaultAssets() + testhelpers.RunAgainstStaging(m) +} diff --git a/cmd/cloudx/relationtuples/main_test.go b/cmd/cloudx/relationtuples/main_test.go new file mode 100644 index 00000000..1c46e089 --- /dev/null +++ b/cmd/cloudx/relationtuples/main_test.go @@ -0,0 +1,21 @@ +// Copyright © 2023 Ory Corp +// SPDX-License-Identifier: Apache-2.0 + +package relationtuples_test + +import ( + "testing" + + "github.com/ory/cli/cmd/cloudx/testhelpers" + "github.com/ory/x/cmdx" +) + +var ( + defaultProject, defaultConfig, defaultEmail, defaultPassword string + defaultCmd *cmdx.CommandExecuter +) + +func TestMain(m *testing.M) { + defaultConfig, defaultEmail, defaultPassword, _, defaultProject, defaultCmd = testhelpers.CreateDefaultAssets() + testhelpers.RunAgainstStaging(m) +} diff --git a/cmd/cloudx/relationtuples/permissions_test.go b/cmd/cloudx/relationtuples/permissions_test.go index 8340ec61..cba9bf61 100644 --- a/cmd/cloudx/relationtuples/permissions_test.go +++ b/cmd/cloudx/relationtuples/permissions_test.go @@ -19,6 +19,6 @@ func TestIsAllowedNoUnauthenticated(t *testing.T) { cmd := testhelpers.ConfigAwareCmd(configDir) _, _, err := cmd.Exec(nil, "is", "allowed", "user", "relation", "namespace", "object", - "--quiet", "--project", project) + "--quiet", "--project", defaultProject) require.ErrorIsf(t, err, client.ErrNoConfigQuiet, "got error: %v", err) } diff --git a/cmd/cloudx/relationtuples/relationtuples_test.go b/cmd/cloudx/relationtuples/relationtuples_test.go index 6fd90571..abcf328c 100644 --- a/cmd/cloudx/relationtuples/relationtuples_test.go +++ b/cmd/cloudx/relationtuples/relationtuples_test.go @@ -15,19 +15,8 @@ import ( "github.com/ory/cli/cmd/cloudx/client" "github.com/ory/cli/cmd/cloudx/relationtuples" "github.com/ory/cli/cmd/cloudx/testhelpers" - "github.com/ory/x/cmdx" ) -var ( - project, defaultEmail, defaultPassword string - defaultCmd *cmdx.CommandExecuter -) - -func TestMain(m *testing.M) { - _, defaultEmail, defaultPassword, _, project, defaultCmd = testhelpers.CreateDefaultAssets() - testhelpers.RunAgainstStaging(m) -} - func TestNoUnauthenticated(t *testing.T) { t.Parallel() cases := []struct { @@ -44,7 +33,7 @@ func TestNoUnauthenticated(t *testing.T) { t.Run("verb="+tc.verb, func(t *testing.T) { configDir := testhelpers.NewConfigDir(t) cmd := testhelpers.ConfigAwareCmd(configDir) - args := append([]string{tc.verb, "relationships", "--quiet", "--project", project}, + args := append([]string{tc.verb, "relationships", "--quiet", "--project", defaultProject}, tc.extraArgs...) _, _, err := cmd.Exec(nil, args...) require.ErrorIsf(t, err, client.ErrNoConfigQuiet, "got error: %v", err) @@ -68,7 +57,7 @@ func TestAfterAuthentication(t *testing.T) { t.Run("verb="+tc.verb, func(t *testing.T) { t.Parallel() cmd, r := testhelpers.WithReAuth(t, defaultEmail, defaultPassword) - args := append([]string{tc.verb, "relation-tuples", "--project", project}, + args := append([]string{tc.verb, "relation-tuples", "--project", defaultProject}, tc.extraArgs...) _, stderr, err := cmd.Exec(r, args...) require.NoError(t, err, stderr) @@ -80,7 +69,7 @@ func TestParse(t *testing.T) { t.Parallel() in := strings.NewReader("nspace:obj#rel@sub") - out, stderr, err := defaultCmd.Exec(in, "parse", "relation-tuples", "--format=json", "--project", project, "-") + out, stderr, err := defaultCmd.Exec(in, "parse", "relation-tuples", "--format=json", "--project", defaultProject, "-") require.NoError(t, err, stderr) assert.JSONEq(t, `{"namespace":"nspace","object":"obj","relation":"rel","subject_id":"sub"}`, out, out) @@ -90,7 +79,7 @@ func TestParse(t *testing.T) { // The tests must be run in a sequence. func TestCRUD(t *testing.T) { t.Parallel() - createNamespace(t, project, `{"name": "n", "id": 0}`) + createNamespace(t, defaultProject, `{"name": "n", "id": 0}`) tuple := func(object string) string { return fmt.Sprintf(`[{ @@ -102,19 +91,19 @@ func TestCRUD(t *testing.T) { } create := func(t *testing.T, object string) string { in := strings.NewReader(tuple(object)) - stdout, stderr, err := defaultCmd.Exec(in, "create", "relation-tuples", "--format", "json", "--project", project, "-") + stdout, stderr, err := defaultCmd.Exec(in, "create", "relation-tuples", "--format", "json", "--project", defaultProject, "-") require.NoError(t, err, stderr) return stdout } list := func(t *testing.T) string { - stdout, stderr, err := defaultCmd.Exec(nil, "list", "relation-tuples", "--format", "json", "--project", project) + stdout, stderr, err := defaultCmd.Exec(nil, "list", "relation-tuples", "--format", "json", "--project", defaultProject) require.NoError(t, err, stderr) return stdout } isAllowed := func(t *testing.T, subject, relation, namespace, object string) string { stdout, stderr, err := defaultCmd.Exec(nil, "is", "allowed", subject, relation, namespace, object, - "--project", project, "--format", "json") + "--project", defaultProject, "--format", "json") require.NoError(t, err, stderr) return stdout } @@ -132,7 +121,7 @@ func TestCRUD(t *testing.T) { require.JSONEq(t, `{"allowed":true}`, stdout, stdout) // 3. delete with --all but without --force - stdout, stderr, err := defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", project, + stdout, stderr, err := defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", defaultProject, "--all") require.NoError(t, err, stderr) require.JSONEq(t, tuple("o1"), gjson.Get(stdout, "relation_tuples").Raw, stdout) @@ -141,13 +130,13 @@ func TestCRUD(t *testing.T) { create(t, "o2") // 5. delete without --all but with --force - _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", project, + _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", defaultProject, "--force") require.ErrorIs(t, err, relationtuples.ErrDeleteMissingAllFlag, stderr) require.Len(t, gjson.Get(list(t), "relation_tuples").Array(), 2, list(t)) // 6. delete one tuple with query and with --force - _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", project, + _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", defaultProject, "--force", "--object=o2") require.NoError(t, err, stderr) require.JSONEq(t, tuple("o1"), gjson.Get(list(t), "relation_tuples").Raw, list(t)) @@ -156,7 +145,7 @@ func TestCRUD(t *testing.T) { create(t, "o42") // 8. delete with --all and with --force - _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", project, + _, stderr, err = defaultCmd.Exec(nil, "delete", "relation-tuples", "--format", "json", "--project", defaultProject, "--force", "--all") require.NoError(t, err, stderr) assert.Len(t, gjson.Get(list(t), "relation_tuples").Array(), 0, list(t)) diff --git a/cmd/cloudx/testhelpers/testhelpers.go b/cmd/cloudx/testhelpers/testhelpers.go index 738a629a..4d9cf78d 100644 --- a/cmd/cloudx/testhelpers/testhelpers.go +++ b/cmd/cloudx/testhelpers/testhelpers.go @@ -71,7 +71,7 @@ func AssertConfig(t *testing.T, configDir string, email string, name string, new c, err := client.NewKratosClient() require.NoError(t, err) - res, _, err := c.FrontendApi.ToSession(context.Background()).XSessionToken(ac.SessionToken).Execute() + res, _, err := c.FrontendAPI.ToSession(context.Background()).XSessionToken(ac.SessionToken).Execute() require.NoError(t, err) traits, err := json.Marshal(res.Identity.Traits) @@ -83,7 +83,8 @@ func AssertConfig(t *testing.T, configDir string, email string, name string, new "consent": { "newsletter": `+fmt.Sprintf("%v", newsletter)+`, "tos": "" - } + }, + "details": {} }`), json.RawMessage(traits), []string{"consent.tos"}) assert.NotEmpty(t, gjson.GetBytes(traits, "consent.tos").String()) } diff --git a/go.mod b/go.mod index 0274c7c0..48007f56 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.1 github.com/imdario/mergo v0.3.13 github.com/jackc/pgx/v4 v4.17.2 - github.com/ory/client-go v1.1.4 + github.com/ory/client-go v1.3.0 github.com/ory/gochimp3 v0.0.0-20200417124117-ccd242db3655 github.com/ory/graceful v0.1.3 github.com/ory/herodot v0.9.13 @@ -38,19 +38,20 @@ require ( github.com/ory/keto v0.10.0-alpha.0.0.20221026143738-31e323a91b68 github.com/ory/kratos v0.10.2-0.20221108163448-d3d148b3a589 github.com/ory/x v0.0.511-0.20221108105728-3fed9bc99daf + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.3.0 github.com/rs/cors v1.8.2 github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 - github.com/spf13/cobra v1.6.1 + github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/square/go-jose/v3 v3.0.0-20200630053402-0a67ce9b0693 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.14.3 github.com/tidwall/sjson v1.2.5 github.com/urfave/negroni v1.0.0 - golang.org/x/term v0.3.0 - golang.org/x/text v0.5.0 + golang.org/x/term v0.14.0 + golang.org/x/text v0.14.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -90,7 +91,7 @@ require ( github.com/coreos/go-oidc v2.2.1+incompatible // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/cristalhq/jwt/v4 v4.0.2 // indirect github.com/dave/jennifer v1.4.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -144,7 +145,7 @@ require ( github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/certificate-transparency-go v1.1.2-0.20210511102531-373a877eec92 // indirect github.com/google/go-github/v27 v27.0.1 // indirect @@ -166,7 +167,7 @@ require ( github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf // indirect github.com/instana/go-sensor v1.46.0 // indirect github.com/jackc/chunkreader/v2 v2.0.1 // indirect @@ -231,7 +232,6 @@ require ( github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/philhofer/fwd v1.1.1 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/profile v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect @@ -311,21 +311,21 @@ require ( go.uber.org/automaxprocs v1.3.0 // indirect go.uber.org/multierr v1.7.0 // indirect go.uber.org/zap v1.17.0 // indirect - golang.org/x/crypto v0.1.0 // indirect + golang.org/x/crypto v0.15.0 // indirect golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.6.0 // indirect - golang.org/x/net v0.4.0 // indirect - golang.org/x/oauth2 v0.3.0 // indirect + golang.org/x/mod v0.8.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/oauth2 v0.14.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.3.0 // indirect + golang.org/x/sys v0.14.0 // indirect golang.org/x/time v0.1.0 // indirect - golang.org/x/tools v0.2.0 // indirect + golang.org/x/tools v0.6.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect google.golang.org/grpc v1.50.1 // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.43.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect diff --git a/go.sum b/go.sum index 4fc762be..567cf289 100644 --- a/go.sum +++ b/go.sum @@ -267,8 +267,9 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= @@ -583,8 +584,9 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -784,8 +786,8 @@ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf h1:FtEj8sfIcaaBfAKrE1Cwb61YDtYq9JxChK1c7AKce7s= github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf/go.mod h1:yrqSXGoD/4EKfF26AOGzscPOgTTJcyAwM2rpixWT+t4= @@ -1163,8 +1165,8 @@ github.com/openzipkin/zipkin-go v0.4.1 h1:kNd/ST2yLLWhaWrkgchya40TJabe8Hioj9udfP github.com/openzipkin/zipkin-go v0.4.1/go.mod h1:qY0VqDSN1pOBN94dBc6w2GJlWLiovAyg7Qt6/I9HecM= github.com/ory/analytics-go/v4 v4.0.3 h1:2zNBQLlm3UiD8U7DdUGLLUBm62ZA5GtbEJ3S5U+xEOI= github.com/ory/analytics-go/v4 v4.0.3/go.mod h1:A3Chm/3TmM8jw4nqRss+gFhAYHRI5j/HFYH3C1FRahU= -github.com/ory/client-go v1.1.4 h1:nN5SZvqeNYiszBPhOZVDfeuROZ8JK8IRLstcw8BDZPo= -github.com/ory/client-go v1.1.4/go.mod h1:rJcImeI/C1xQ4FVYvOPI8ProHOuJbMPdo5+9bmJIHlU= +github.com/ory/client-go v1.3.0 h1:KTRj/cnnZ4hiZFgyzLPAZD4EqCd0E26+UIguBX1DAzU= +github.com/ory/client-go v1.3.0/go.mod h1:uMJcdC0rVopCcxbDA6Cq2xUmW5M0h2X2XMvPCLmsSmg= github.com/ory/dockertest/v3 v3.9.1 h1:v4dkG+dlu76goxMiTT2j8zV7s4oPPEppKT8K8p2f1kY= github.com/ory/dockertest/v3 v3.9.1/go.mod h1:42Ir9hmvaAPm0Mgibk6mBPi7SFvTXxEcnztDYOJ//uM= github.com/ory/fosite v0.42.3-0.20220801115804-c557908b0db2 h1:yH0piGEbRn7+oe9xEGIB4gvuDoLi7LW+eVIR8Q8PVtY= @@ -1417,8 +1419,8 @@ github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJ github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1443,7 +1445,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1453,8 +1454,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= @@ -1695,8 +1696,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1738,8 +1739,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1810,8 +1811,8 @@ golang.org/x/net v0.0.0-20220622184535-263ec571b305/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1836,8 +1837,8 @@ golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.3.0 h1:6l90koy8/LaBLmLu8jpHeHexzMwEita0zFfYlggy2F8= -golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1971,14 +1972,14 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= 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.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1989,8 +1990,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2079,8 +2080,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2231,8 +2232,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/DataDog/dd-trace-go.v1 v1.43.0 h1:UE3SNh7T7ZnCrYsDZuUuwN3LFSc5aphaszUF+wMm4Sk= gopkg.in/DataDog/dd-trace-go.v1 v1.43.0/go.mod h1:YL9g+nlUY7ByCffD5pDytAqy99GNbytRV0EBpKuldM4= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=