dify/e2e/features/step-definitions/auth/session-refresh.steps.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

53 lines
2.0 KiB
TypeScript

import type { DifyWorld } from '../../support/world'
import { Given, When } from '@cucumber/cucumber'
import { expect } from '@playwright/test'
const consoleAccessTokenCookieName = /^(?:__Host-)?access_token$/
const consoleRefreshTokenCookieName = /^(?:__Host-)?refresh_token$/
Given('my console session requires token refresh', async function (this: DifyWorld) {
if (!this.context)
throw new Error('Playwright browser context has not been initialized for this scenario.')
const cookies = await this.context.cookies()
const hasAccessToken = cookies.some((cookie) => consoleAccessTokenCookieName.test(cookie.name))
const hasRefreshToken = cookies.some((cookie) => consoleRefreshTokenCookieName.test(cookie.name))
expect(
hasAccessToken,
'Expected the authenticated E2E session to include a console access token.',
).toBe(true)
expect(
hasRefreshToken,
'Expected the authenticated E2E session to include a console refresh token.',
).toBe(true)
await this.context.clearCookies({ name: consoleAccessTokenCookieName })
const remainingCookies = await this.context.cookies()
expect(
remainingCookies.some((cookie) => consoleAccessTokenCookieName.test(cookie.name)),
'Expected the console access token to be removed before opening the default console entry.',
).toBe(false)
expect(
remainingCookies.some((cookie) => consoleRefreshTokenCookieName.test(cookie.name)),
'Expected the console refresh token to remain available for server-side refresh.',
).toBe(true)
})
When(
'I open the default console entry after the access token expires',
async function (this: DifyWorld) {
const page = this.getPage()
const refreshRequestPromise = page.waitForRequest((request) => {
const url = new URL(request.url())
return url.pathname.endsWith('/auth/refresh') && url.searchParams.get('redirect_url') === '/'
})
await page.goto('/')
const refreshRequest = await refreshRequestPromise
this.attach(`Session refresh request: ${refreshRequest.url()}`, 'text/plain')
},
)