diff --git a/backend/internal/jobqueue/main_test.go b/backend/internal/jobqueue/main_test.go index 8a781d3c..bebdc7d1 100644 --- a/backend/internal/jobqueue/main_test.go +++ b/backend/internal/jobqueue/main_test.go @@ -33,6 +33,7 @@ func TestShutdown(t *testing.T) { err := Shutdown() require.Nil(t, err, "Shutdown should not return an error when jobqueue is started") + // nolint: gosimple select { case <-ctx.Done(): switch ctx.Err() { diff --git a/docker/ci/postgres/authentik.sql.gz b/docker/ci/postgres/authentik.sql.gz index c67ecc9f..f711b922 100644 Binary files a/docker/ci/postgres/authentik.sql.gz and b/docker/ci/postgres/authentik.sql.gz differ diff --git a/test/cypress/e2e/api/Ldap.cy.js b/test/cypress/e2e/api/Ldap.cy.js index 62641ed5..afc86896 100644 --- a/test/cypress/e2e/api/Ldap.cy.js +++ b/test/cypress/e2e/api/Ldap.cy.js @@ -1,16 +1,10 @@ /// -const { curry } = require("lodash"); - -// WIP - describe('LDAP with Authentik', () => { let token; if (Cypress.env('stack') === 'postgres') { before(() => { - cy.task('log', 'STACK IS: ' + Cypress.env('stack')); - cy.resetUsers(); cy.getToken().then((tok) => { token = tok; diff --git a/test/cypress/e2e/api/OAuth.cy.js b/test/cypress/e2e/api/OAuth.cy.js new file mode 100644 index 00000000..7bb5d552 --- /dev/null +++ b/test/cypress/e2e/api/OAuth.cy.js @@ -0,0 +1,66 @@ +/// + +describe('OAuth with Authentik', () => { + let token; + if (Cypress.env('stack') === 'postgres') { + + before(() => { + cy.resetUsers(); + cy.getToken().then((tok) => { + token = tok; + + cy.task('backendApiPut', { + token: token, + path: '/api/settings/oauth-auth', + data: { + value: { + client_id: 'U5gCy0ymU8OofWS4nmkAPugCbWkFkkPztap38ReD', + client_secret: '9ZFClxwp7LzbfhIDk7k9DngQNQfwDAYqPrQMGXjFumCvQZATtXCwme20o0TnLP6uEHUkKqEFOInhxp01gVeaHCLW83iTK4PonoUnpFnXgyZAcu0H3zBxxOkVtRwACaoW', + authorization_url: 'http://authentik-ldap:9000/application/o/authorize/', + resource_url: 'http://authentik-ldap:9000/application/o/userinfo/', + token_url: 'http://authentik-ldap:9000/application/o/token/', + logout_url: 'http://authentik-ldap:9000/application/o/npm3/end-session/', + identifier: 'preferred_username', + scopes: [], + auto_create_user: true + } + } + }).then((data) => { + cy.validateSwaggerSchema('put', 200, '/settings/{name}', data); + expect(data.result).to.have.property('id'); + expect(data.result.id).to.be.greaterThan(0); + }); + + cy.task('backendApiPut', { + token: token, + path: '/api/settings/auth-methods', + data: { + value: [ + 'local', + 'oauth' + ] + } + }).then((data) => { + cy.validateSwaggerSchema('put', 200, '/settings/{name}', data); + expect(data.result).to.have.property('id'); + expect(data.result.id).to.be.greaterThan(0); + }); + }); + }); + + it('Should log in with OAuth', function() { + cy.task('backendApiGet', { + token: token, + path: '/oauth/login?redirect_base=http%3A%2F%2Ffullstack%3A81', + }).then((data) => { + expect(data).to.have.property('result'); + cy.visit(data.result); + cy.get('input[name="uidField"]').type('cypress'); + cy.get('button[type="submit"]').click(); + cy.get('input[name="password"]').type('fqXBfUYqHvYqiwBHWW7f'); + cy.get('button[type="submit"]').click(); + cy.url().should('match', /fullstack/) + }); + }); + } +});