// Type definitions for chai-http 3.0 // Project: https://github.com/chaijs/chai-http // Definitions by: Wim Looman // Liam Jones // Federico Caselli // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 /// /// declare global { namespace Chai { interface ChaiStatic { request: ChaiHttpRequest; } interface ChaiHttpRequest { (server: any): ChaiHttp.Agent; agent(server: any): ChaiHttp.Agent; addPromises(promiseConstructor: any): void; } interface Assertion { status(code: number): Assertion; header(key: string, value?: string | RegExp): Assertion; headers: Assertion; json: Assertion; text: Assertion; html: Assertion; redirect: Assertion; redirectTo(location: string): Assertion; param(key: string, value?: string): Assertion; cookie(key: string, value?: string): Assertion; } interface TypeComparison { ip: Assertion; } } namespace ChaiHttp { interface Promise { then(onFulfilled: (value: T) => U, onRejected?: (reason: any) => U): Promise; } interface Response { body: any; type: string; status: number; text: string; setEncoding(encoding: string): void; on(event: string, fn: (...args: any[]) => void): void; } interface Request extends FinishedRequest { attach(field: string, file: string|Buffer, filename: string): Request; set(field: string, val: string): Request; query(params: any): Request; send(data: any): Request; auth(user: string, name: string): Request; field(name: string, val: string): Request; buffer(): Request; parse(fn: (res: Response, cb: (e?: Error, r?: any) => void) => void): Request; end(callback?: (err: any, res: Response) => void): FinishedRequest; } interface FinishedRequest { then(success?: (res: T) => TR1 | PromiseLike, failure?: (err: any) => TR2 | PromiseLike): FinishedRequest; catch(failure?: (err: any) => void): FinishedRequest; } interface Agent { get(url: string, callback?: (err: any, res: Response) => void): Request; post(url: string, callback?: (err: any, res: Response) => void): Request; put(url: string, callback?: (err: any, res: Response) => void): Request; head(url: string, callback?: (err: any, res: Response) => void): Request; del(url: string, callback?: (err: any, res: Response) => void): Request; options(url: string, callback?: (err: any, res: Response) => void): Request; patch(url: string, callback?: (err: any, res: Response) => void): Request; } interface TypeComparison { ip: any; } } } declare function chaiHttp(chai: any, utils: any): void; export = chaiHttp;