From df9fc506b85bc5f0979777712e738732a54bd764 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 15:37:12 +0100 Subject: [PATCH 1/9] chore: fix all issues reported by the CI --- cmd/clidoc/main.go | 4 ---- internal/driver.go | 2 +- persistence/reference.go | 1 - persistence/sql/persister.go | 15 ++++----------- selfservice/flow/settings/strategy_helper.go | 3 +-- text/id_test.go | 3 ++- 6 files changed, 8 insertions(+), 20 deletions(-) diff --git a/cmd/clidoc/main.go b/cmd/clidoc/main.go index 6d0c57e8e0d..a7cdbff8f3b 100644 --- a/cmd/clidoc/main.go +++ b/cmd/clidoc/main.go @@ -269,7 +269,3 @@ func validateAllMessages(path string) error { return nil } - -type importerFunc func(path string) (*types.Package, error) - -func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } diff --git a/internal/driver.go b/internal/driver.go index 487096f7f8a..d1b0b17598e 100644 --- a/internal/driver.go +++ b/internal/driver.go @@ -80,7 +80,7 @@ func NewRegistryDefaultWithDSN(t *testing.T, dsn string) (*config.Config, *drive require.NoError(t, err) reg.Config(context.Background()).MustSet("dev", true) require.NoError(t, reg.Init(context.Background(), driver.SkipNetworkInit)) - require.NoError(t, reg.Persister().NetworkMigrateUp(context.Background())) + require.NoError(t, reg.Persister().MigrateUp(context.Background())) // always migrate up actual, err := reg.Persister().DetermineNetwork(context.Background()) require.NoError(t, err) diff --git a/persistence/reference.go b/persistence/reference.go index c5f168580ae..0fb89bde0d1 100644 --- a/persistence/reference.go +++ b/persistence/reference.go @@ -48,7 +48,6 @@ type Persister interface { MigrationStatus(c context.Context) (popx.MigrationStatuses, error) MigrateDown(c context.Context, steps int) error MigrateUp(c context.Context) error - NetworkMigrateUp(c context.Context) error Migrator() *popx.Migrator GetConnection(ctx context.Context) *pop.Connection Transaction(ctx context.Context, callback func(ctx context.Context, connection *pop.Connection) error) error diff --git a/persistence/sql/persister.go b/persistence/sql/persister.go index e06a768b653..e54a0ae0e65 100644 --- a/persistence/sql/persister.go +++ b/persistence/sql/persister.go @@ -5,6 +5,8 @@ import ( "embed" "fmt" + "github.com/ory/x/fsx" + "github.com/ory/kratos/corp" "github.com/gobuffalo/pop/v5" @@ -49,10 +51,11 @@ type ( ) func NewPersister(ctx context.Context, r persisterDependencies, c *pop.Connection) (*Persister, error) { - m, err := popx.NewMigrationBox(migrations, popx.NewMigrator(c, r.Logger(), r.Tracer(ctx), 0)) + m, err := popx.NewMigrationBox(fsx.Merge(migrations, networkx.Migrations), popx.NewMigrator(c, r.Logger(), r.Tracer(ctx), 0)) if err != nil { return nil, err } + m.DumpMigrations = false return &Persister{ c: c, mb: m, r: r, isSQLite: c.Dialect.Name() == "sqlite3", @@ -102,17 +105,7 @@ func (p *Persister) MigrateDown(ctx context.Context, steps int) error { return p.mb.Down(ctx, steps) } -func (p *Persister) NetworkMigrateUp(ctx context.Context) error { - // nolint - return p.p.MigrateUp(ctx) -} - func (p *Persister) MigrateUp(ctx context.Context) error { - // nolint - if err := p.p.MigrateUp(ctx); err != nil { - return err - } - return p.mb.Up(ctx) } diff --git a/selfservice/flow/settings/strategy_helper.go b/selfservice/flow/settings/strategy_helper.go index cdd76f9b2f0..fa358e76721 100644 --- a/selfservice/flow/settings/strategy_helper.go +++ b/selfservice/flow/settings/strategy_helper.go @@ -1,7 +1,6 @@ package settings import ( - "fmt" "net/http" "runtime/debug" "time" @@ -70,7 +69,7 @@ func PrepareUpdate(d interface { } d.Logger(). WithField("package", pkgName). - WithField("stack_trace", fmt.Sprintf("%s", debug.Stack())). + WithField("stack_trace", string(debug.Stack())). WithField("expected_request_id", payload.GetFlowID()). WithField("actual_request_id", f.ID). Debug("Flow ID from continuity manager does not match Flow ID from request.") diff --git a/text/id_test.go b/text/id_test.go index a778a703de0..21038cd6c8e 100644 --- a/text/id_test.go +++ b/text/id_test.go @@ -23,7 +23,8 @@ func TestIDs(t *testing.T) { assert.Equal(t, 1060001, int(InfoSelfServiceRecoverySuccessful)) assert.Equal(t, 1060002, int(InfoSelfServiceRecoveryEmailSent)) - assert.Equal(t, 1070000, int(InfoSelfServiceVerification)) + assert.Equal(t, 1070000, int(InfoNodeLabel)) + assert.Equal(t, 1080000, int(InfoSelfServiceVerification)) assert.Equal(t, 4000000, int(ErrorValidation)) assert.Equal(t, 4000001, int(ErrorValidationGeneric)) From fa6cac4e306c0963450ac8ba335c8444585cc2e2 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 16:31:58 +0100 Subject: [PATCH 2/9] test: fix --- .../cypress/integration/profiles/email/login/success.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts index bc8155636d1..4ab2a17584e 100644 --- a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts +++ b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts @@ -92,7 +92,6 @@ describe('Basic email profile with succeeding login flows', () => { }) it('should redirect to return_to when retrying expired flow', () => { - cy.longLoginLifespan() cy.get(appPrefix('express') + 'input[name="password_identifier"]').type( email.toUpperCase() ) @@ -104,6 +103,8 @@ describe('Basic email profile with succeeding login flows', () => { 'The login flow expired' ) + cy.longLoginLifespan() + // try again with long lifespan set cy.get('input[name="password_identifier"]').type(email.toUpperCase()) cy.get('input[name="password"]').type(password) From 53105ce594616ce6790fcec2a02a9ad1e0b3cfe4 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 16:40:51 +0100 Subject: [PATCH 3/9] ci: remove npm i -g expo-cli as that is part of the script anyways --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5680bdad5a4..bd21c759c92 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -101,7 +101,6 @@ jobs: - v3-e2e-deps-{{ checksum "package-lock.json" }}-{{ checksum "test/e2e/package-lock.json" }} - run: npm ci - run: cd test/e2e; npm ci - - run: sudo npm i -g expo-cli - save_cache: key: v3-e2e-deps-{{ checksum "package-lock.json" }}-{{ checksum "test/e2e/package-lock.json" }} paths: From 9b3f630af246b12229382c5304591ac2ed6f6859 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 17:12:22 +0100 Subject: [PATCH 4/9] test: try fix --- .../cypress/integration/profiles/email/login/success.spec.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts index 4ab2a17584e..ec344e400e7 100644 --- a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts +++ b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts @@ -97,14 +97,15 @@ describe('Basic email profile with succeeding login flows', () => { ) cy.get('input[name="password"]').type(password) + // set login lifespan to long, before creating the new flow + cy.longLoginLifespan() + cy.submitPasswordForm() cy.get('[data-testid="ui/message/4010001"]').should( 'contain.text', 'The login flow expired' ) - cy.longLoginLifespan() - // try again with long lifespan set cy.get('input[name="password_identifier"]').type(email.toUpperCase()) cy.get('input[name="password"]').type(password) From 49df79fe27312952b854ea76b0aefa6a1f44abfa Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 17:42:53 +0100 Subject: [PATCH 5/9] revert --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index bd21c759c92..5680bdad5a4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -101,6 +101,7 @@ jobs: - v3-e2e-deps-{{ checksum "package-lock.json" }}-{{ checksum "test/e2e/package-lock.json" }} - run: npm ci - run: cd test/e2e; npm ci + - run: sudo npm i -g expo-cli - save_cache: key: v3-e2e-deps-{{ checksum "package-lock.json" }}-{{ checksum "test/e2e/package-lock.json" }} paths: From b5561a292c43bf0cb517a458d75513f1e4dab8f9 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 18:53:11 +0100 Subject: [PATCH 6/9] now really fix the test? --- .../profiles/email/login/success.spec.ts | 14 ++++++++------ test/e2e/cypress/support/commands.ts | 9 +++++---- test/e2e/package.json | 4 ++-- test/e2e/proxy/package-lock.json | 1 - 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts index ec344e400e7..1df9a3cfb83 100644 --- a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts +++ b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts @@ -21,7 +21,7 @@ describe('Basic email profile with succeeding login flows', () => { profile: 'spa' } ].forEach(({ route, profile, app }) => { - describe(`for app ${app}`, () => { + describe.skip(`for app ${app}`, () => { before(() => { cy.proxy(app) }) @@ -82,24 +82,26 @@ describe('Basic email profile with succeeding login flows', () => { cy.proxy('express') cy.useConfigProfile('email') - cy.shortLoginLifespan() cy.browserReturnUrlOry() }) beforeEach(() => { cy.clearAllCookies() - cy.visit(express.login + '?return_to=https://www.ory.sh/') }) it('should redirect to return_to when retrying expired flow', () => { + cy.shortLoginLifespan() + cy.wait(500) + + cy.visit(express.login + '?return_to=https://www.ory.sh/') + + cy.longLoginLifespan() + cy.get(appPrefix('express') + 'input[name="password_identifier"]').type( email.toUpperCase() ) cy.get('input[name="password"]').type(password) - // set login lifespan to long, before creating the new flow - cy.longLoginLifespan() - cy.submitPasswordForm() cy.get('[data-testid="ui/message/4010001"]').should( 'contain.text', diff --git a/test/e2e/cypress/support/commands.ts b/test/e2e/cypress/support/commands.ts index c3e9fcec2ee..878c3d1b089 100644 --- a/test/e2e/cypress/support/commands.ts +++ b/test/e2e/cypress/support/commands.ts @@ -30,11 +30,12 @@ const mergeFields = (form, fields) => { const updateConfigFile = (cb: (arg: any) => any) => { cy.readFile(configFile).then((contents) => { - let config = YAML.parse(contents) - config = cb(config) - cy.writeFile(configFile, YAML.stringify(config)) + cy.writeFile(configFile, YAML.stringify( + cb( + YAML.parse(contents) + ))) + cy.wait(200) }) - cy.wait(200) } Cypress.Commands.add('useConfigProfile', (profile: string) => { diff --git a/test/e2e/package.json b/test/e2e/package.json index 939dbde2714..aefa1520a65 100644 --- a/test/e2e/package.json +++ b/test/e2e/package.json @@ -2,8 +2,8 @@ "name": "@ory/kratos-e2e-suite", "version": "0.0.1", "scripts": { - "test": "cypress run --browser chrome", - "test:watch": "cypress open --browser chrome", + "test": "cypress run --browser firefox", + "test:watch": "cypress open --browser firefox", "openapi-generator-cli": "openapi-generator-cli", "wait-on": "wait-on", "text-run": "exit 0" diff --git a/test/e2e/proxy/package-lock.json b/test/e2e/proxy/package-lock.json index 1a4852f395e..d559e4ccca6 100644 --- a/test/e2e/proxy/package-lock.json +++ b/test/e2e/proxy/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "proxy", "version": "1.0.0", "dependencies": { "express": "^4.17.1", From 0811801cb45c578837db668ddda4d977d00aa142 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 18:54:04 +0100 Subject: [PATCH 7/9] format --- test/e2e/cypress/support/commands.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/e2e/cypress/support/commands.ts b/test/e2e/cypress/support/commands.ts index 878c3d1b089..bb1bf686bed 100644 --- a/test/e2e/cypress/support/commands.ts +++ b/test/e2e/cypress/support/commands.ts @@ -30,10 +30,7 @@ const mergeFields = (form, fields) => { const updateConfigFile = (cb: (arg: any) => any) => { cy.readFile(configFile).then((contents) => { - cy.writeFile(configFile, YAML.stringify( - cb( - YAML.parse(contents) - ))) + cy.writeFile(configFile, YAML.stringify(cb(YAML.parse(contents)))) cy.wait(200) }) } From 006d399635f3b8589e0534003cc2a84e2a005056 Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 18:55:32 +0100 Subject: [PATCH 8/9] remove skip --- .../cypress/integration/profiles/email/login/success.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts index 1df9a3cfb83..bbb58479df2 100644 --- a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts +++ b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts @@ -21,7 +21,7 @@ describe('Basic email profile with succeeding login flows', () => { profile: 'spa' } ].forEach(({ route, profile, app }) => { - describe.skip(`for app ${app}`, () => { + describe(`for app ${app}`, () => { before(() => { cy.proxy(app) }) @@ -91,7 +91,7 @@ describe('Basic email profile with succeeding login flows', () => { it('should redirect to return_to when retrying expired flow', () => { cy.shortLoginLifespan() - cy.wait(500) + // cy.wait(500) cy.visit(express.login + '?return_to=https://www.ory.sh/') From a7270b35f0f5527e463e41f8f09002340f0b1dcb Mon Sep 17 00:00:00 2001 From: zepatrik Date: Thu, 2 Dec 2021 19:18:03 +0100 Subject: [PATCH 9/9] u --- .../cypress/integration/profiles/email/login/success.spec.ts | 2 +- test/e2e/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts index bbb58479df2..ce93d8bea8a 100644 --- a/test/e2e/cypress/integration/profiles/email/login/success.spec.ts +++ b/test/e2e/cypress/integration/profiles/email/login/success.spec.ts @@ -91,7 +91,7 @@ describe('Basic email profile with succeeding login flows', () => { it('should redirect to return_to when retrying expired flow', () => { cy.shortLoginLifespan() - // cy.wait(500) + cy.wait(500) cy.visit(express.login + '?return_to=https://www.ory.sh/') diff --git a/test/e2e/package.json b/test/e2e/package.json index aefa1520a65..939dbde2714 100644 --- a/test/e2e/package.json +++ b/test/e2e/package.json @@ -2,8 +2,8 @@ "name": "@ory/kratos-e2e-suite", "version": "0.0.1", "scripts": { - "test": "cypress run --browser firefox", - "test:watch": "cypress open --browser firefox", + "test": "cypress run --browser chrome", + "test:watch": "cypress open --browser chrome", "openapi-generator-cli": "openapi-generator-cli", "wait-on": "wait-on", "text-run": "exit 0"