@amadeus-it-group/kassette
Version:
Development server, used mainly for testing, which proxies requests and is able to easily manage local mocks.
340 lines (339 loc) • 9.1 kB
TypeScript
export interface HarFormat {
log: HarFormatLog;
}
export interface HarFormatLog {
version?: string;
creator: HarFormatApp;
browser?: HarFormatApp;
pages?: any[];
entries: HarFormatEntry[];
comment?: string;
}
export interface HarFormatApp {
name: string;
version?: string;
comment?: string;
}
/**
* Detailed information about a request and its response, as stored in a har file.
*
* @public
*/
export interface HarFormatEntry {
/**
* Content used to create a checksum
*
* @remarks
*
* kassette only includes this field if {@link IMock.saveChecksumContent | saveChecksumContent} is true and
* if the {@link IMock.checksum | checksum} method was called.
*/
_kassetteChecksumContent?: string;
/**
* Key used by kassette to select the correct mock to replay.
*
* @remarks
*
* This field contains the value passed to {@link IMock.setMockHarKey} when used with the default
* {@link ConfigurationSpec.mocksHarKeyManager | mocksHarKeyManager}.
*/
_kassetteMockKey?: string;
/**
* Detailed information about the request forwarded to the remote server.
*
* @remarks
*
* kassette only includes this field if {@link IMock.saveForwardedRequestData | saveInputRequestData} is true.
*/
_kassetteForwardedRequest?: HarFormatRequest;
/**
* Reference to the parent page. This is not implemented in kassette.
*/
pageref?: string;
/**
* Date and time of the request start, as a string in ISO format (YYYY-MM-DDThh:mm:ss.sTZD).
*/
startedDateTime?: string;
/**
* Total time of the request, in milliseconds. This is the sum of all timings in the {@link HarFormatEntry.timings | timings object}.
*/
time?: number;
/**
* Detailed information about the input request.
*
* @remarks
*
* kassette only includes this field if {@link IMock.saveInputRequestData | saveInputRequestData} is true.
*/
request?: HarFormatRequest;
/**
* Detailed information about the response.
*/
response?: HarFormatResponse;
/**
* Information about the cache. This is not implemented in kassette.
*/
cache?: any;
/**
* Detailed timing information about request/response round trip.
*
* @remarks
*
* kassette only includes this field if {@link IMock.saveDetailedTimings | saveDetailedTimings} is true.
*/
timings?: HarFormatTimings;
/**
* Server IP address. This is not implemented in kassette.
*/
serverIPAddress?: string;
/**
* Unique ID of the TCP/IP connection. This is not implemented in kassette.
*/
connection?: string;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
}
/**
* Detailed information about a request, as stored in a har file.
*
* @public
*/
export interface HarFormatRequest {
/**
* Request method, such as "GET" or "POST".
*/
method?: string;
/**
* Request URL.
*/
url?: string;
/**
* Request HTTP version, such as "HTTP/1.1".
*/
httpVersion?: string;
/**
* Information about cookies. This is not implemented in kassette.
*/
cookies?: any[];
/**
* List of request headers.
*/
headers?: HarFormatNameValuePair[];
/**
* List of query parameters.
*/
queryString?: HarFormatNameValuePair[];
/**
* Information about the request body.
*
* @remarks
*
* kassette only includes this field if {@link IMock.saveInputRequestBody | saveInputRequestBody} is true
* (or, for the {@link HarFormatEntry._kassetteForwardedRequest | _kassetteForwardedRequest}.postData field,
* if {@link IMock.saveForwardedRequestBody | saveForwardedRequestBody} is true).
*/
postData?: HarFormatPostData;
/**
* Total number of bytes from the start of the HTTP request message until (and including) the double CRLF before the body,
* or -1 if it is unknown. kassette always sets -1 for this field.
*/
headersSize?: number;
/**
* Size of the request body in bytes or -1 if it is unknown.
*/
bodySize?: number;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
}
/**
* Detailed information about a response, as stored in a har file.
*
* @public
*/
export interface HarFormatResponse {
/**
* Response status.
*/
status?: number;
/**
* Response status text.
*/
statusText?: string;
/**
* Response HTTP version, such as "HTTP/1.1".
*/
httpVersion?: string;
/**
* Information about cookies. This is not implemented in kassette.
*/
cookies?: any[];
/**
* List of response headers.
*/
headers?: HarFormatNameValuePair[];
/**
* Information about the response body.
*/
content?: HarFormatContent;
/**
* Content of the `Location` response header if present.
*/
redirectURL?: string;
/**
* Total number of bytes from the start of the HTTP response message until (and including) the double CRLF before the body,
* or -1 if it is unknown. kassette always sets -1 for this field.
*/
headersSize?: number;
/**
* Size of the response body in bytes, or -1 if it is unknown.
*/
bodySize?: number;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
}
/**
* Details about the time spent for each phase of a request-response round trip. All times are specified in milliseconds.
*
* @public
*/
export interface RequestTimings {
/**
* Time spent in a queue waiting for a network connection.
* Can be -1 if the timing does not apply to the current request.
*/
blocked?: number;
/**
* The time required to resolve a host name.
* Can be -1 if the timing does not apply to the current request.
*/
dns?: number;
/**
* Time required to create TCP connection.
* Can be -1 if the timing does not apply to the current request.
*/
connect?: number;
/**
* Time required to send HTTP request to the server.
*/
send?: number;
/**
* Time waiting for a response from the server.
*/
wait?: number;
/**
* Time required to read entire response from the server.
*/
receive?: number;
/**
* Time required for SSL/TLS negotiation.
* This time is also included in the {@link RequestTimings.connect|RequestTimings.connect} field.
* Can be -1 if the timing does not apply to the current request.
*/
ssl?: number;
}
/**
* Details about the time spent for each phase of a request-response round trip, as stored in a har file.
*
* @public
*/
export interface HarFormatTimings extends RequestTimings {
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
}
/**
* Information about a request body, as stored in a har file.
*
* @public
*/
export interface HarFormatPostData {
/**
* Value of the `Content-Type` request header, if present.
*/
mimeType?: string;
/**
* List of posted parameters. This is not implemented in kassette.
*
* @remarks
*
* kassette always fills the {@link HarFormatPostData.text | text field} and never uses the params field.
*/
params?: any[];
/**
* Posted data, as a (binary) string.
*/
text?: string;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
/**
* Response body saved as an object.
*/
json?: any;
}
/**
* Information about the response body, as stored in a har file.
*
* @public
*/
export interface HarFormatContent {
/**
* Size of the content in bytes.
*/
size?: number;
/**
* Number of bytes saved by compression. This is not implemented by kassette.
*/
compression?: number;
/**
* Value of the `Content-Type` response header.
*/
mimeType?: string;
/**
* Response body.
*
* @remarks
*
* The response body can be encoded in base64 if this is specified in the {@link HarFormatContent.encoding | encoding} field.
*/
text?: string;
/**
* Encoding used for the {@link HarFormatContent.text | text} field, such as "base64".
*/
encoding?: string;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
/**
* Response body saved as an object.
*/
json?: any;
}
/**
* Information about a header or a query parameter, as stored in a har file.
*
* @public
*/
export interface HarFormatNameValuePair {
/**
* Name of the header or query parameter.
*/
name: string;
/**
* Value of the header or the query parameter.
*/
value: string;
/**
* Any comment as a string. This is not used by kassette.
*/
comment?: string;
}