UNPKG

@universis/common

Version:

Universis - common directives and services

66 lines (65 loc) 7.15 kB
import { Injectable } 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) { // 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 matcj * @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); } } } ApiTestingController.decorators = [ { type: Injectable } ]; /** @nocollapse */ ApiTestingController.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRlc3RpbmctY29udHJvbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9jb21tb24vdGVzdGluZy8iLCJzb3VyY2VzIjpbImFwaS10ZXN0aW5nLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBTXpDLE1BQU07SUFHRjtRQUNJLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFnRCxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBbUI7UUFDckIscURBQXFEO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLE1BQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLHFDQUFxQztZQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3Qyw2QkFBNkI7WUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsRUFBRTtnQkFDTCx1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDSCxVQUFVO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDekM7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpREFBaUQ7WUFDakUsOENBQThDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEdBQXFCO1FBQ3RCLFdBQVc7UUFDWCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3Qyw2QkFBNkI7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxtQ0FBbUM7UUFDbkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQzs7O1lBN0RKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZXF1ZXN0TWF0Y2gsIFRlc3RSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cC90ZXN0aW5nJztcbmltcG9ydCB7SHR0cFJlcXVlc3R9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpVGVzdGluZ0NvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgX21hdGNoOiBSZXF1ZXN0TWF0Y2g7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRjaGVzOiBNYXA8UmVxdWVzdE1hdGNoLCAocmVxdWVzdDogVGVzdFJlcXVlc3QpID0+IHZvaWQ+O1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBpbml0aWFsaXplIG1hcFxuICAgICAgICB0aGlzLm1hdGNoZXMgPSBuZXcgTWFwPFJlcXVlc3RNYXRjaCwgKHJlcXVlc3Q6IFRlc3RSZXF1ZXN0KSA9PiB2b2lkPigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXBhcmVzIGEgcmVxdWVzdCBtYXBwZXIgYmFzZWQgb24gdGhlIGdpdmVuIHJlcXVlc3QgbWF0Y2hcbiAgICAgKiBAcGFyYW0gbWF0Y2hcbiAgICAgKi9cbiAgICBtYXRjaChtYXRjaDogUmVxdWVzdE1hdGNoKTogQXBpVGVzdGluZ0NvbnRyb2xsZXIge1xuICAgICAgICAvLyBzZXQgdGVtcCByZXF1ZXN0IGFuZCBwcmVwYXJlIHRvIGdldCByZXF1ZXN0IG1hcHBlclxuICAgICAgICB0aGlzLl9tYXRjaCA9IG1hdGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXBzIGEgcmVxdWVzdCAoYmFzZWQgb24gYW4gaW4tcHJvY2VzcyByZXF1ZXN0IG1hdGNoKVxuICAgICAqIHdpdGggYW4gaW5zdGFuY2Ugb2YgVGVzdFJlcXVlc3QgY2xhc3NcbiAgICAgKiBAcGFyYW0gbWFwcGVyXG4gICAgICovXG4gICAgbWFwKG1hcHBlcjogKHJlcXVlc3Q6IFRlc3RSZXF1ZXN0KSA9PiB2b2lkKTogQXBpVGVzdGluZ0NvbnRyb2xsZXIge1xuICAgICAgICBpZiAodGhpcy5fbWF0Y2gpIHtcbiAgICAgICAgICAgIC8vIHNlYXJjaCBpZiBtYXRjaC51cmwgYWxyZWFkeSBleGlzdHNcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKHRoaXMubWF0Y2hlcy5rZXlzKCkpO1xuICAgICAgICAgICAgLy8gZmluZCBrZXkgYnkgbWV0aG9kIGFuZCB1cmxcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1ldGhvZCA9PT0gdGhpcy5fbWF0Y2gubWV0aG9kICYmIHZhbHVlLnVybCA9PT0gdGhpcy5fbWF0Y2gudXJsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGV4aXN0aW5nIGl0ZW1cbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXMuc2V0KGtleSwgbWFwcGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIG5ld1xuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlcy5zZXQodGhpcy5fbWF0Y2gsIG1hcHBlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZXF1ZXN0IG1hdGNoIGNhbm5vdCBiZSBlbXB0eSBhdCB0aGlzIGNvbnRleHQuICcgK1xuICAgICAgICAgICAgJ0NhbGwgQ29tbW9uVGVzdEh0dHBDb250cm9sbGVyLm1hdGNoKCkgZmlyc3QuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSByZXF1ZXN0IG1hcHBlciBiYXNlZCBvbiB0aGUgZ2l2ZW4gcmVxdWVzdCBtYXRjalxuICAgICAqIEBwYXJhbSByZXFcbiAgICAgKi9cbiAgICBmaW5kKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IChyZXF1ZXN0OiBUZXN0UmVxdWVzdCkgPT4gdm9pZCB7XG4gICAgICAgIC8vIGdldCBrZXlzXG4gICAgICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKHRoaXMubWF0Y2hlcy5rZXlzKCkpO1xuICAgICAgICAvLyBmaW5kIGtleSBieSBtZXRob2QgYW5kIHVybFxuICAgICAgICBjb25zdCBrZXkgPSBrZXlzLmZpbmQodmFsdWUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1ldGhvZCA9PT0gcmVxLm1ldGhvZCAmJiB2YWx1ZS51cmwgPT09IHJlcS51cmw7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhbmQgcmV0dXJuIHJlcXVlc3QgbWFwcGVyIGlmIGFueVxuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGVzLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19