summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/pipes/safe
diff options
context:
space:
mode:
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);
+ }
+ }
+}