Split out of actions/toolkit (packages/http-client, history kept by filter-repo). Brings the 2024 [LevK] packaging edits forward onto current upstream: - tsconfig.json: the monorepo root's compiler options inlined, no extends - jest.config.cjs: the root's ts-jest transform, rooted at tests/ (isolatedModules: ESM lib/ and sources run through CommonJS) - __tests__/ -> tests/ - package.json: test = jest, build = tsc; jest/ts-jest/typescript as devDependencies; repository, homepage, bugs on git.levk.dev - .gitignore: node_modules/, lib/, audit.json - HttpCodes.PayloadTooLarge = 413 (the 2024 edit; still missing upstream) Not carried over from 2024: the _getExistingOrDefaultHeader type narrowing (upstream has since fixed it properly), version reset to 1.0.0 (dependents' ranges need upstream's numbering) and the Unlicense field (the code is MIT). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UHXzGrsxfkGk8LmwrBbHNZ
73 lines
2.4 KiB
TypeScript
73 lines
2.4 KiB
TypeScript
import * as httpm from '../lib'
|
|
import * as am from '../lib/auth'
|
|
|
|
describe('auth', () => {
|
|
beforeEach(() => {})
|
|
|
|
afterEach(() => {})
|
|
|
|
it('does basic http get request with basic auth', async () => {
|
|
const bh: am.BasicCredentialHandler = new am.BasicCredentialHandler(
|
|
'johndoe',
|
|
'password'
|
|
)
|
|
const http: httpm.HttpClient = new httpm.HttpClient('http-client-tests', [
|
|
bh
|
|
])
|
|
const res: httpm.HttpClientResponse = await http.get(
|
|
'https://postman-echo.com/get'
|
|
)
|
|
expect(res.message.statusCode).toBe(200)
|
|
const body: string = await res.readBody()
|
|
const obj = JSON.parse(body)
|
|
const auth: string = obj.headers.authorization
|
|
const creds: string = Buffer.from(
|
|
auth.substring('Basic '.length),
|
|
'base64'
|
|
).toString()
|
|
expect(creds).toBe('johndoe:password')
|
|
expect(obj.url).toBe('https://postman-echo.com/get')
|
|
})
|
|
|
|
it('does basic http get request with pat token auth', async () => {
|
|
const token = 'scbfb44vxzku5l4xgc3qfazn3lpk4awflfryc76esaiq7aypcbhs'
|
|
const ph: am.PersonalAccessTokenCredentialHandler =
|
|
new am.PersonalAccessTokenCredentialHandler(token)
|
|
|
|
const http: httpm.HttpClient = new httpm.HttpClient('http-client-tests', [
|
|
ph
|
|
])
|
|
const res: httpm.HttpClientResponse = await http.get(
|
|
'https://postman-echo.com/get'
|
|
)
|
|
expect(res.message.statusCode).toBe(200)
|
|
const body: string = await res.readBody()
|
|
const obj = JSON.parse(body)
|
|
const auth: string = obj.headers.authorization
|
|
const creds: string = Buffer.from(
|
|
auth.substring('Basic '.length),
|
|
'base64'
|
|
).toString()
|
|
expect(creds).toBe(`PAT:${token}`)
|
|
expect(obj.url).toBe('https://postman-echo.com/get')
|
|
})
|
|
|
|
it('does basic http get request with pat token auth', async () => {
|
|
const token = 'scbfb44vxzku5l4xgc3qfazn3lpk4awflfryc76esaiq7aypcbhs'
|
|
const ph: am.BearerCredentialHandler = new am.BearerCredentialHandler(token)
|
|
|
|
const http: httpm.HttpClient = new httpm.HttpClient('http-client-tests', [
|
|
ph
|
|
])
|
|
const res: httpm.HttpClientResponse = await http.get(
|
|
'https://postman-echo.com/get'
|
|
)
|
|
expect(res.message.statusCode).toBe(200)
|
|
const body: string = await res.readBody()
|
|
const obj = JSON.parse(body)
|
|
const auth: string = obj.headers.authorization
|
|
expect(auth).toBe(`Bearer ${token}`)
|
|
expect(obj.url).toBe('https://postman-echo.com/get')
|
|
})
|
|
})
|