diff options
author | Ittay Stern <ittay.stern@att.com> | 2018-08-29 17:01:32 +0300 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-02-18 18:35:30 +0200 |
commit | 6f900cc45d7dd7f97430812b86b5c1d1693c8ae3 (patch) | |
tree | 936005c364dc5a7264d6304d4777c3d83494db22 /vid-webpack-master/src/app/shared/pipes/safe | |
parent | 67d99f816cc583643c35193197594cf78d8ce60a (diff) |
merge from ecomp a88f0072 - Modern UI
Issue-ID: VID-378
Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-webpack-master/src/app/shared/pipes/safe')
-rw-r--r-- | vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts | 60 | ||||
-rw-r--r-- | vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts | 22 |
2 files changed, 82 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts new file mode 100644 index 000000000..f0471731e --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.spec.ts @@ -0,0 +1,60 @@ +import {SafePipe} from "./safe.pipe"; +import {DomSanitizer} from "@angular/platform-browser"; +import {getTestBed, TestBed} from "@angular/core/testing"; + + +describe('Safe pipe', () => { + + let injector; + let pipe: SafePipe; + let sanitizer: DomSanitizer; + + beforeAll(done => (async () => { + TestBed.configureTestingModule({ + providers: [SafePipe] + }); + await TestBed.compileComponents(); + + injector = getTestBed(); + sanitizer = injector.get(DomSanitizer); + pipe = injector.get(SafePipe); + + })().then(done).catch(done.fail)); + + test('safe pipe should return Safe object', () => { + let options = [ + { + value: 'value', + type: 'html', + func: 'bypassSecurityTrustHtml' + }, + { + value: 'value', + type: 'style', + func: 'bypassSecurityTrustStyle' + }, + { + value: 'value', + type: 'script', + func: 'bypassSecurityTrustScript' + }, + { + value: 'value', + type: 'url', + func: 'bypassSecurityTrustUrl' + }, + { + value: 'value', + type: 'resourceUrl', + func: 'bypassSecurityTrustResourceUrl' + } + ]; + + for (let option of options) { + jest.spyOn(sanitizer, <any>option.func); + pipe.transform(option.value, option.type); + expect(sanitizer[option.func]).toHaveBeenCalledWith(option.value); + } + }); + +}); diff --git a/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts new file mode 100644 index 000000000..cff5b61a9 --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts @@ -0,0 +1,22 @@ +// @ts-ignore +import {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from "@angular/platform-browser"; +import {Pipe, PipeTransform} from "@angular/core"; + + +@Pipe({ + name: 'safe' +}) +export class SafePipe implements PipeTransform { + + constructor(protected sanitizer: DomSanitizer) {} + + public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl { + switch (type) { + case 'html': return this.sanitizer.bypassSecurityTrustHtml(value); + case 'style': return this.sanitizer.bypassSecurityTrustStyle(value); + case 'script': return this.sanitizer.bypassSecurityTrustScript(value); + case 'url': return this.sanitizer.bypassSecurityTrustUrl(value); + case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value); + } + } +} |