UNPKG

@universis/common

Version:

Universis - common directives and services

67 lines 7.79 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class ApiTestingController { constructor() { // initialize map this.matches = new Map(); } /** * Prepares a request mapper based on the given request match * @param match */ match(match) { // set temp request and prepare to get request mapper this._match = match; return this; } /** * Maps a request (based on an in-process request match) * with an instance of TestRequest class * @param mapper */ map(mapper) { if (this._match != null) { // search if match.url already exists const keys = Array.from(this.matches.keys()); // find key by method and url const key = keys.find(value => { return value.method === this._match.method && value.url === this._match.url; }); if (key) { // update existing item this.matches.set(key, mapper); } else { // add new this.matches.set(this._match, mapper); } this._match = null; return this; } throw new TypeError('Request match cannot be empty at this context. ' + 'Call CommonTestHttpController.match() first.'); } /** * Finds a request mapper based on the given request match * @param req */ find(req) { // get keys const keys = Array.from(this.matches.keys()); // find key by method and url const key = keys.find(value => { return value.method === req.method && value.url === req.url; }); // and return request mapper if any if (key) { return this.matches.get(key); } return; } } ApiTestingController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTestingController, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); ApiTestingController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTestingController }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTestingController, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRlc3RpbmctY29udHJvbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdGluZy9zcmMvYXBpLXRlc3RpbmctY29udHJvbGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXpDLE1BQU0sT0FBTyxvQkFBb0I7SUFHN0I7UUFDSSxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0QsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLEtBQW1CO1FBQ3JCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxNQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3JCLHFDQUFxQztZQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3Qyw2QkFBNkI7WUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsRUFBRTtnQkFDTCx1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDSCxVQUFVO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDekM7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpREFBaUQ7WUFDakUsOENBQThDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEdBQXFCO1FBQ3RCLFdBQVc7UUFDWCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3Qyw2QkFBNkI7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxtQ0FBbUM7UUFDbkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTztJQUNYLENBQUM7O2tIQTdEUSxvQkFBb0I7c0hBQXBCLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVxdWVzdE1hdGNoLCBUZXN0UmVxdWVzdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAvdGVzdGluZyc7XG5pbXBvcnQge0h0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwaVRlc3RpbmdDb250cm9sbGVyIHtcbiAgICBwcml2YXRlIF9tYXRjaDogUmVxdWVzdE1hdGNoIHwgYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0Y2hlczogTWFwPFJlcXVlc3RNYXRjaCwgKHJlcXVlc3Q6IFRlc3RSZXF1ZXN0KSA9PiB2b2lkPjtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gaW5pdGlhbGl6ZSBtYXBcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbmV3IE1hcDxSZXF1ZXN0TWF0Y2gsIChyZXF1ZXN0OiBUZXN0UmVxdWVzdCkgPT4gdm9pZD4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmVwYXJlcyBhIHJlcXVlc3QgbWFwcGVyIGJhc2VkIG9uIHRoZSBnaXZlbiByZXF1ZXN0IG1hdGNoXG4gICAgICogQHBhcmFtIG1hdGNoXG4gICAgICovXG4gICAgbWF0Y2gobWF0Y2g6IFJlcXVlc3RNYXRjaCk6IEFwaVRlc3RpbmdDb250cm9sbGVyIHtcbiAgICAgICAgLy8gc2V0IHRlbXAgcmVxdWVzdCBhbmQgcHJlcGFyZSB0byBnZXQgcmVxdWVzdCBtYXBwZXJcbiAgICAgICAgdGhpcy5fbWF0Y2ggPSBtYXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFwcyBhIHJlcXVlc3QgKGJhc2VkIG9uIGFuIGluLXByb2Nlc3MgcmVxdWVzdCBtYXRjaClcbiAgICAgKiB3aXRoIGFuIGluc3RhbmNlIG9mIFRlc3RSZXF1ZXN0IGNsYXNzXG4gICAgICogQHBhcmFtIG1hcHBlclxuICAgICAqL1xuICAgIG1hcChtYXBwZXI6IChyZXF1ZXN0OiBUZXN0UmVxdWVzdCkgPT4gdm9pZCk6IEFwaVRlc3RpbmdDb250cm9sbGVyIHtcbiAgICAgICAgaWYgKHRoaXMuX21hdGNoICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIHNlYXJjaCBpZiBtYXRjaC51cmwgYWxyZWFkeSBleGlzdHNcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKHRoaXMubWF0Y2hlcy5rZXlzKCkpO1xuICAgICAgICAgICAgLy8gZmluZCBrZXkgYnkgbWV0aG9kIGFuZCB1cmxcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1ldGhvZCA9PT0gdGhpcy5fbWF0Y2gubWV0aG9kICYmIHZhbHVlLnVybCA9PT0gdGhpcy5fbWF0Y2gudXJsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGV4aXN0aW5nIGl0ZW1cbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMuc2V0KGtleSwgbWFwcGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIG5ld1xuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlcy5zZXQodGhpcy5fbWF0Y2gsIG1hcHBlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZXF1ZXN0IG1hdGNoIGNhbm5vdCBiZSBlbXB0eSBhdCB0aGlzIGNvbnRleHQuICcgK1xuICAgICAgICAgICAgJ0NhbGwgQ29tbW9uVGVzdEh0dHBDb250cm9sbGVyLm1hdGNoKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSByZXF1ZXN0IG1hcHBlciBiYXNlZCBvbiB0aGUgZ2l2ZW4gcmVxdWVzdCBtYXRjaFxuICAgICAqIEBwYXJhbSByZXFcbiAgICAgKi9cbiAgICBmaW5kKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6ICgocmVxdWVzdDogVGVzdFJlcXVlc3QpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gZ2V0IGtleXNcbiAgICAgICAgY29uc3Qga2V5cyA9IEFycmF5LmZyb20odGhpcy5tYXRjaGVzLmtleXMoKSk7XG4gICAgICAgIC8vIGZpbmQga2V5IGJ5IG1ldGhvZCBhbmQgdXJsXG4gICAgICAgIGNvbnN0IGtleSA9IGtleXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWV0aG9kID09PSByZXEubWV0aG9kICYmIHZhbHVlLnVybCA9PT0gcmVxLnVybDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGFuZCByZXR1cm4gcmVxdWVzdCBtYXBwZXIgaWYgYW55XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hdGNoZXMuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cbiJdfQ==