From d6a247a9c4a37aff890db422dd7e77c96dfd1333 Mon Sep 17 00:00:00 2001 From: Daniel Witz Date: Tue, 8 Jul 2025 11:54:14 +0300 Subject: [PATCH 1/2] typed body patterns --- package.json | 5 ++-- src/types.ts | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 83 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 46e69e9..a4b9f17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@osskit/wiremock-client", - "version": "4.3.3", + "version": "4.3.4", "repository": { "type": "git", "url": "https://github.com/osskit/wiremock-client.git" @@ -57,5 +57,6 @@ "lint-staged": { "*.ts": "eslint --fix", "*.{ts,js,json}": "prettier --write" - } + }, + "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610" } diff --git a/src/types.ts b/src/types.ts index 830b92f..107bbe7 100644 --- a/src/types.ts +++ b/src/types.ts @@ -9,13 +9,92 @@ export enum HttpMethod { export interface Configuration { baseUrl: string; } +export interface ExpressionContains { + expression: string; + contains: string; +} + +export interface ExpressionEqualsToJson { + expression: string; + equalToJson: string; +} + +export type MatchesJson = ExpressionContains | ExpressionEqualsToJson; + +export interface MatchesJsonPath { + matchesJsonPath: MatchesJson | string; +} + +export interface MatchesJsonSchema { + matchesJsonSchema: Record; +} + +export enum ComparisonType { + ATTR_NAME_LOOKUP = 'ATTR_NAME_LOOKUP', + ATTR_VALUE = 'ATTR_VALUE', + ATTR_VALUE_EXPLICITLY_SPECIFIED = 'ATTR_VALUE_EXPLICITLY_SPECIFIED', + CHILD_LOOKUP = 'CHILD_LOOKUP', + CHILD_NODELIST_LENGTH = 'CHILD_NODELIST_LENGTH', + CHILD_NODELIST_SEQUENCE = 'CHILD_NODELIST_SEQUENCE', + DOCTYPE_NAME = 'DOCTYPE_NAME', + DOCTYPE_PUBLIC_ID = 'DOCTYPE_PUBLIC_ID', + DOCTYPE_SYSTEM_ID = 'DOCTYPE_SYSTEM_ID', + ELEMENT_NUM_ATTRIBUTES = 'ELEMENT_NUM_ATTRIBUTES', + ELEMENT_TAG_NAME = 'ELEMENT_TAG_NAME', + HAS_DOCTYPE_DECLARATION = 'HAS_DOCTYPE_DECLARATION', + NAMESPACE_PREFIX = 'NAMESPACE_PREFIX', + NAMESPACE_URI = 'NAMESPACE_URI', + NO_NAMESPACE_SCHEMA_LOCATION = 'NO_NAMESPACE_SCHEMA_LOCATION', + NODE_TYPE = 'NODE_TYPE', + PROCESSING_INSTRUCTION_DATA = 'PROCESSING_INSTRUCTION_DATA', + PROCESSING_INSTRUCTION_TARGET = 'PROCESSING_INSTRUCTION_TARGET', + SCHEMA_LOCATION = 'SCHEMA_LOCATION', + TEXT_VALUE = 'TEXT_VALUE', + XML_ENCODING = 'XML_ENCODING', + XML_STANDALONE = 'XML_STANDALONE', + XML_VERSION = 'XML_VERSION', +} + +export enum NamespaceAwareness { + STRICT = 'STRICT', + LEGACY = 'LEGACY', + NONE = 'NONE', +} + +export interface EqualsToXml { + equalToXml: string; + enablePlaceholders?: boolean; + placeholderOpeningDelimiterRegex?: string; + placeholderClosingDelimiterRegex?: string; + exemptedComparisons?: ComparisonType[]; + ignoreOrderOfSameNode?: boolean; + namespaceAwareness?: NamespaceAwareness; + expression?: string; +} + +export interface MatchesXPath { + matchesXPath: EqualsToXml | string; + xPathNamespaces?: Record; +} + +export interface BinaryEqualsTo { + binaryEqualsTo: string; +} + +export interface EqualsToJson { + equalToJson: Record | string; + ignoreArrayOrder?: boolean; + ignoreExtraElements?: boolean; +} + +export type BodyPattern = BinaryEqualsTo | EqualsToJson | MatchesJson | MatchesJsonPath | MatchesJsonSchema | MatchesXPath; export interface RequestPattern { url?: string; urlPathPattern?: string; method?: HttpMethod; queryParameters?: Record; - bodyPatterns?: Record[]; + bodyPatterns?: BodyPattern[] | Record[]; headers?: Record; } From 8e2eec4a8b03eb23353d9d4399a959d53a505546 Mon Sep 17 00:00:00 2001 From: Daniel Witz Date: Tue, 8 Jul 2025 12:01:58 +0300 Subject: [PATCH 2/2] . --- package.json | 4 ++-- tests/docker-compose.yml | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index a4b9f17..5a9c624 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "prepare": "husky install", "test": "yarn test:teardown && yarn test:setup && yarn test:start && yarn test:teardown", "test:start": "NODE_OPTIONS=--experimental-vm-modules jest --config tests/jest.config.ts", - "test:teardown": "cd tests && docker-compose down --remove-orphans", - "test:setup": "yarn build && cd tests && docker-compose pull && docker-compose build && docker-compose up -d" + "test:teardown": "cd tests && docker compose down --remove-orphans", + "test:setup": "yarn build && cd tests && docker compose pull && docker compose build && docker compose up -d" }, "engines": { "node": ">=18.0.0" diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index ddba140..ca20e4c 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: mocks: image: wiremock/wiremock