Files
orca/src/shared/github/account-binding.test.ts
T

65 lines
2.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
ghAccountBindingsEqual,
ghTokenEnvVarForHost,
normalizeGhAccountBinding
} from './account-binding'
describe('normalizeGhAccountBinding', () => {
it('trims, lowercases host, and preserves user case', () => {
expect(normalizeGhAccountBinding({ host: ' GitHub.COM ', user: ' Alice ' })).toEqual({
host: 'github.com',
user: 'Alice'
})
})
it('rejects malformed shapes', () => {
expect(normalizeGhAccountBinding(null)).toBeNull()
expect(normalizeGhAccountBinding({ host: '', user: 'a' })).toBeNull()
expect(normalizeGhAccountBinding({ host: 'github.com', user: '' })).toBeNull()
expect(normalizeGhAccountBinding({ host: 'bad host', user: 'a' })).toBeNull()
expect(normalizeGhAccountBinding({ host: 'github.com', user: 'has space' })).toBeNull()
})
it('accepts GHES/LDAP logins with underscores and dots', () => {
expect(normalizeGhAccountBinding({ host: 'github.acme.com', user: 'svc_build' })).toEqual({
host: 'github.acme.com',
user: 'svc_build'
})
expect(normalizeGhAccountBinding({ host: 'github.acme.com', user: 'first.last' })).toEqual({
host: 'github.acme.com',
user: 'first.last'
})
})
})
describe('ghTokenEnvVarForHost', () => {
it('selects GH_TOKEN for github.com, github.localhost, and *.ghe.com', () => {
expect(ghTokenEnvVarForHost('github.com')).toBe('GH_TOKEN')
expect(ghTokenEnvVarForHost('github.localhost')).toBe('GH_TOKEN')
expect(ghTokenEnvVarForHost('acme.ghe.com')).toBe('GH_TOKEN')
})
it('selects GH_ENTERPRISE_TOKEN for classic GHES hosts', () => {
expect(ghTokenEnvVarForHost('github.acme-corp.com')).toBe('GH_ENTERPRISE_TOKEN')
expect(ghTokenEnvVarForHost('ghe.internal')).toBe('GH_ENTERPRISE_TOKEN')
})
})
describe('ghAccountBindingsEqual', () => {
it('compares equal pairs and preserves user case sensitivity', () => {
expect(
ghAccountBindingsEqual(
{ host: 'github.com', user: 'Alice' },
{ host: 'github.com', user: 'Alice' }
)
).toBe(true)
expect(
ghAccountBindingsEqual(
{ host: 'github.com', user: 'Alice' },
{ host: 'github.com', user: 'alice' }
)
).toBe(false)
})
})