summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/pipes/safe
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2018-08-29 17:01:32 +0300
committerIttay Stern <ittay.stern@att.com>2019-02-18 18:35:30 +0200
commit6f900cc45d7dd7f97430812b86b5c1d1693c8ae3 (patch)
tree936005c364dc5a7264d6304d4777c3d83494db22 /vid-webpack-master/src/app/shared/pipes/safe
parent67d99f816cc583643c35193197594cf78d8ce60a (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.ts60
-rw-r--r--vid-webpack-master/src/app/shared/pipes/safe/safe.pipe.ts22
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);
+ }
+ }
+}