snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
This commit is contained in:
106
test/e2e/cypress/helpers/oauth2.ts
Normal file
106
test/e2e/cypress/helpers/oauth2.ts
Normal file
@@ -0,0 +1,106 @@
|
||||
// Copyright © 2023 Ory Corp
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import * as uuid from "uuid"
|
||||
|
||||
export type oAuth2Client = {
|
||||
auth_endpoint: string
|
||||
token_endpoint: string
|
||||
id: string
|
||||
secret: string
|
||||
token_endpoint_auth_method: string
|
||||
grant_types: string[]
|
||||
response_types: string[]
|
||||
scopes: string[]
|
||||
callbacks: string[]
|
||||
}
|
||||
|
||||
export function getDefaultAuthorizeURL(client: oAuth2Client) {
|
||||
const state = uuid.v4()
|
||||
const nonce = uuid.v4()
|
||||
return getAuthorizeURL(
|
||||
client.auth_endpoint,
|
||||
"",
|
||||
client.id,
|
||||
undefined,
|
||||
nonce,
|
||||
"https://ory-network-httpbin-ijakee5waq-ez.a.run.app/anything",
|
||||
"code",
|
||||
["offline", "openid"],
|
||||
state,
|
||||
undefined,
|
||||
)
|
||||
}
|
||||
|
||||
export function getAuthorizeURL(
|
||||
auth_endpoint: string,
|
||||
audience: string,
|
||||
client_id: string,
|
||||
max_age: string | undefined,
|
||||
nonce: string,
|
||||
redirect_uri: string,
|
||||
response_type:
|
||||
| "code"
|
||||
| "id_token"
|
||||
| "id_token token"
|
||||
| "code id_token"
|
||||
| "code token"
|
||||
| "code id_token token",
|
||||
scopes: string[],
|
||||
state: string,
|
||||
code_challenge?: string,
|
||||
): string {
|
||||
const r = new URL(auth_endpoint)
|
||||
r.searchParams.append("audience", audience)
|
||||
r.searchParams.append("client_id", client_id)
|
||||
if (max_age !== undefined) {
|
||||
r.searchParams.append("max_age", max_age)
|
||||
}
|
||||
r.searchParams.append("nonce", nonce)
|
||||
r.searchParams.append("prompt", "")
|
||||
r.searchParams.append("redirect_uri", redirect_uri)
|
||||
r.searchParams.append("response_type", response_type)
|
||||
r.searchParams.append("scope", scopes.join(" "))
|
||||
r.searchParams.append("state", state)
|
||||
|
||||
code_challenge && r.searchParams.append("code_challenge", code_challenge)
|
||||
return r.toString()
|
||||
}
|
||||
|
||||
export function getToken(
|
||||
token_endpoint: string,
|
||||
client_id: string,
|
||||
client_secret: string,
|
||||
grant_type: "authorization_code",
|
||||
code: string,
|
||||
redirect_uri: string,
|
||||
scope: string,
|
||||
) {
|
||||
let urlEncodedData = ""
|
||||
const urlEncodedDataPairs = []
|
||||
urlEncodedDataPairs.push(
|
||||
encodeURIComponent("grant_type") + "=" + encodeURIComponent(grant_type),
|
||||
)
|
||||
urlEncodedDataPairs.push(
|
||||
encodeURIComponent("code") + "=" + encodeURIComponent(code),
|
||||
)
|
||||
urlEncodedDataPairs.push(
|
||||
encodeURIComponent("redirect_uri") + "=" + encodeURIComponent(redirect_uri),
|
||||
)
|
||||
urlEncodedDataPairs.push(
|
||||
encodeURIComponent("scope") + "=" + encodeURIComponent(scope),
|
||||
)
|
||||
|
||||
urlEncodedData = urlEncodedDataPairs.join("&").replace(/%20/g, "+")
|
||||
|
||||
return cy.request({
|
||||
method: "POST",
|
||||
url: token_endpoint,
|
||||
form: true,
|
||||
body: urlEncodedData,
|
||||
headers: {
|
||||
Accept: "application/json",
|
||||
Authorization: "Basic " + btoa(client_id + ":" + client_secret),
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user