@universis/common
Version:
Universis - common directives and services
67 lines • 7.79 kB
JavaScript
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==