mirror of
https://github.com/langgenius/dify.git
synced 2026-07-29 16:29:36 +08:00
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import type { ActiveContext } from '@/auth/hosts'
|
|
import type { HttpClient } from '@/http/types'
|
|
import { describe, expect, it } from 'vitest'
|
|
import { selectAppReader, SubjectKind, subjectOf } from './app-reader'
|
|
import { AppsClient } from './apps'
|
|
import { PermittedExternalAppsClient } from './permitted-external-apps'
|
|
|
|
const http = { baseURL: 'https://x', request: async () => new Response() } as unknown as HttpClient
|
|
|
|
function ctx(external: boolean): ActiveContext {
|
|
return {
|
|
host: 'h',
|
|
email: 'e',
|
|
ctx: {
|
|
account: { id: 'a', email: 'e', name: 'n' },
|
|
external_subject: external ? { email: 'e', issuer: 'i' } : undefined,
|
|
},
|
|
}
|
|
}
|
|
|
|
describe('selectAppReader', () => {
|
|
it('account login → AppsClient', () => {
|
|
expect(selectAppReader(ctx(false), http)).toBeInstanceOf(AppsClient)
|
|
expect(subjectOf(ctx(false))).toBe(SubjectKind.Account)
|
|
})
|
|
it('external_subject present → PermittedExternalAppsClient', () => {
|
|
expect(selectAppReader(ctx(true), http)).toBeInstanceOf(PermittedExternalAppsClient)
|
|
expect(subjectOf(ctx(true))).toBe(SubjectKind.External)
|
|
})
|
|
})
|