From 2bb4bdf64776db431b12ca06bc4fd4568175d0c0 Mon Sep 17 00:00:00 2001 From: Tobias Date: Mon, 7 May 2018 21:07:28 +0200 Subject: [PATCH] fixed not working on all lang levels; improved typings documentation and examplex --- README.md | 6 ++-- examples/fake-test.spec.js | 4 +-- package.json | 13 +++++---- src/RequestInspector.ts | 20 ------------- src/RequestSpy.ts | 19 +++++++++--- src/ResponseFaker.ts | 18 ++++++++++-- types/index.d.ts | 59 +++++++++++--------------------------- 7 files changed, 59 insertions(+), 80 deletions(-) delete mode 100644 src/RequestInspector.ts diff --git a/README.md b/README.md index e1d6d79..f9831c5 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ let responseFaker = new ResponseFaker('/ajax/some-request', { body: JSON.stringify({successful: false, payload: []}) }); -requestInterceptor.addFaker(mock); +requestInterceptor.addFaker(responseFaker); ``` For further details on how to replace different formats of data like images, text or html, please refer to the examples provided in the [github repository](https://github.com/Tabueeee/puppeteer-request-spy/tree/master/examples). @@ -134,7 +134,7 @@ Clears all registered patterns in `urlsToBlock`. ### class: RequestSpy `RequestSpy` is used to count and verify intercepted requests matching a specific pattern. #### RequestSpy constructor(pattern) -- `pattern`: \> +- `pattern`: \> `pattern` passed to the `matcher` function of the `RequestInterceptor`. @@ -160,7 +160,7 @@ The `RequestInterceptor` calls this method when an interceptedUrl matches the pa #### RequestSpy constructor(pattern, responseFake) - `pattern`: \> -- `responseFake`: `Response` for details refer to [puppeteer API](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#requestrespondresponse) +- `responseFake`: \<`Response`> for details refer to [puppeteer API](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#requestrespondresponse) #### RequestFaker.getPatterns() - returns: \\> return the `pattern` list of the faker diff --git a/examples/fake-test.spec.js b/examples/fake-test.spec.js index 3cbce54..ed51f50 100644 --- a/examples/fake-test.spec.js +++ b/examples/fake-test.spec.js @@ -31,7 +31,7 @@ describe('example-block', function () { before(() => { requestInterceptor = new RequestInterceptor(minimatch, console); - defaultPicture = fs.readFileSync('./t2.png'); + defaultPicture = fs.readFileSync('./some-picture.png'); imageResponseFaker = new ResponseFaker('**/*.jpg', { status: 200, contentType: 'image/png', @@ -52,7 +52,7 @@ describe('example-block', function () { jsonResponseFaker = new ResponseFaker('**/*.jpg', { status: 200, - contentType: 'image/png', + contentType: 'application/json', body: JSON.stringify({data: []}) }); diff --git a/package.json b/package.json index 90d1c8b..48219f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "puppeteer-request-spy", - "version": "1.1.0", + "version": "1.1.1", "description": "watch, fake or block requests from puppeteer matching patterns", "main": "build/src/index.js", "scripts": { @@ -10,9 +10,10 @@ "build-dev": "node_modules/.bin/tsc -p tsconfig.json --sourcemap", "pretest": "npm run build", "test": "node_modules/.bin/mocha --timeout 10000 --require source-map-support/register build/test/**/*.spec.js", - "test-silent": "node_modules/.bin/mocha --timeout 10000 --require source-map-support/register build/test/isolation/**/*.dev.spec.js > test-ts.log", + "test-silent-full": "node_modules/.bin/mocha --timeout 10000 --require source-map-support/register build/test/**/*.spec.js > test-ts.log", + "test-silent": "node_modules/.bin/mocha --timeout 10000 --require source-map-support/register build/test/**/*.dev.spec.js > test-ts.log", "pretest-coverage": "npm run build-dev", - "test-coverage": "node_modules/.bin/nyc --all --reporter=html npm run test-silent", + "test-coverage": "node_modules/.bin/nyc --all --reporter=html npm run test-silent-full", "pretest-coverage-travis": "npm run build-dev", "test-coverage-travis": "node_modules/.bin/nyc --all --reporter=text-lcov npm run test-silent | node node_modules/coveralls/bin/coveralls.js" }, @@ -51,10 +52,10 @@ "devDependencies": { "@types/minimatch": "^3.0.3", "@types/mocha": "^5.2.0", - "@types/node": "^10.0.0", + "@types/node": "^10.0.4", + "@types/puppeteer": "^1.3.1", "@types/sinon": "^4.3.1", - "@types/puppeteer": "^1.2.3", - "coveralls": "^3.0.0", + "coveralls": "^3.0.1", "minimatch": "^3.0.4", "mocha": "^5.1.1", "nyc": "^11.7.1", diff --git a/src/RequestInspector.ts b/src/RequestInspector.ts deleted file mode 100644 index 9745df3..0000000 --- a/src/RequestInspector.ts +++ /dev/null @@ -1,20 +0,0 @@ -export abstract class RequestInspector { - - private patterns: Array = []; - - public constructor(patterns: Array | string) { - if (typeof patterns !== 'string' && patterns.constructor !== Array) { - throw new Error('invalid pattern, pattern must be of type string or string[].'); - } - - if (typeof patterns === 'string') { - patterns = [patterns]; - } - - this.patterns = patterns; - } - - public getPatterns(): Array { - return this.patterns; - } -} diff --git a/src/RequestSpy.ts b/src/RequestSpy.ts index 1c32e46..53c84ba 100644 --- a/src/RequestSpy.ts +++ b/src/RequestSpy.ts @@ -1,13 +1,24 @@ -import {RequestInspector} from './RequestInspector'; - -export class RequestSpy extends RequestInspector { +export class RequestSpy { private hasMatchingUrl: boolean = false; private matchedUrls: Array = []; private matchCount: number = 0; + private patterns: Array = []; public constructor(patterns: Array | string) { - super(patterns); + if (typeof patterns !== 'string' && patterns.constructor !== Array) { + throw new Error('invalid pattern, pattern must be of type string or string[].'); + } + + if (typeof patterns === 'string') { + patterns = [patterns]; + } + + this.patterns = patterns; + } + + public getPatterns(): Array { + return this.patterns; } public hasMatch(): boolean { diff --git a/src/ResponseFaker.ts b/src/ResponseFaker.ts index a8a72c8..dd76909 100644 --- a/src/ResponseFaker.ts +++ b/src/ResponseFaker.ts @@ -1,16 +1,28 @@ import {RespondOptions} from 'puppeteer'; -import {RequestInspector} from './RequestInspector'; -export class ResponseFaker extends RequestInspector { +export class ResponseFaker { private responseFake: RespondOptions; + private patterns: Array = []; public constructor(patterns: Array | string, responseFake: RespondOptions) { - super(patterns); + if (typeof patterns !== 'string' && patterns.constructor !== Array) { + throw new Error('invalid pattern, pattern must be of type string or string[].'); + } + + if (typeof patterns === 'string') { + patterns = [patterns]; + } + + this.patterns = patterns; this.responseFake = responseFake; } public getResponseFake(): RespondOptions { return this.responseFake; } + + public getPatterns(): Array { + return this.patterns; + } } diff --git a/types/index.d.ts b/types/index.d.ts index 67414e4..643a61b 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,68 +1,43 @@ -import {Request, RespondOptions} from 'puppeteer'; -import {Logger} from './common/Logger'; +import { Request } from 'puppeteer'; +import { Logger } from './common/Logger'; -export declare abstract class RequestInspector { - private patterns; - - constructor(patterns: Array | string); - - getPatterns(): Array; -} - -/** - * @description The RequestInterceptor will match any intercepted request against the matcher function and notify all spies with a matching pattern and block requests matching any pattern in urlsToBlock. - **/ export declare class RequestInterceptor { - private spies; + private requestSpies; + private responseFakers; private urlsToBlock; private matcher; private logger; - constructor(matcher: (testString: string, pattern: string) => boolean, logger?: Logger); - - intercept(interceptedUrl: Request): void; - + intercept(interceptedUrl: Request): Promise; addSpy(requestSpy: RequestSpy): void; - + addFaker(responseFaker: ResponseFaker): void; block(urls: Array | string): void; - clearSpies(): void; - + clearFakers(): void; clearUrlsToBlock(): void; - setUrlsToBlock(urlsToBlock: Array): void; - - private blockUrl(interceptedUrl); - - private acceptUrl(interceptedUrl); + private blockUrl(interceptedUrl, url); + private acceptUrl(interceptedUrl, url); } -/** - * @description RequestSpy is used to count and verify intercepted requests matching a specific pattern. - **/ -export declare class RequestSpy extends RequestInspector { +export declare class RequestSpy { private hasMatchingUrl; private matchedUrls; private matchCount; - + private patterns; constructor(patterns: Array | string); - + getPatterns(): Array; hasMatch(): boolean; - getMatchedUrls(): Array; - getMatchCount(): number; - - addMatchedUrl(interceptedRequest: string): void; + addMatchedUrl(matchedUrl: string): void; } -/** - * @description RequestFaker is used to provide a fake response when matched to a specific pattern. - **/ -export declare class ResponseFaker extends RequestInspector { +import { RespondOptions } from 'puppeteer'; +export declare class ResponseFaker { private responseFake; - + private patterns; constructor(patterns: Array | string, responseFake: RespondOptions); - getResponseFake(): RespondOptions; + getPatterns(): Array; }