use*_*629 4 protractor karma-jasmine angular
我正在为SafePipe 编写测试.该方法使用bypassSecurityTrustResourceUrl()
.我搜索了可用的解决方案并尝试了它们但不幸的是,它对我没有帮助.错误是
预期的SafeValue必须使用[property] = binding:Cross(请参阅http://g.co/ng/security#xss)为"Cross site Request".
我在这做什么错了?
import {Pipe, PipeTransform} from "@angular/core";
import {DomSanitizer} from "@angular/platform-browser";
@Pipe({name: 'safe'})
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {
}
public transform(url: string): any {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
测试是:
import {SafePipe} from './safe.pipe';
import {DomSanitizer} from "@angular/platform-browser";
import {DomSanitizerImpl} from "@angular/platform-browse/src/security/dom_sanitization_service";
fdescribe('SafePipe', () => {
let pipe: SafePipe;
let sanitizer: DomSanitizer = new DomSanitizerImpl();
beforeEach(() => {
pipe = new SafePipe(sanitizer);
});
it('should transform', () => {
expect(pipe.transform("Cross <script>alert('Hello')</script>")).toBe("Cross alert('Hello')");
});
});
Run Code Online (Sandbox Code Playgroud)
sanitizer.bypassSecurityTrustResourceUrl
方法返回SafeResourceUrlImpl
类,你不能将它转换为字符串(jasmine试图在内部转换它).
abstract class SafeValueImpl implements SafeValue {
constructor(public changingThisBreaksApplicationSecurity: string) {
// empty
}
abstract getTypeName(): string;
toString() {
return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +
` (see http://g.co/ng/security#xss)`;
}
}
Run Code Online (Sandbox Code Playgroud)
你应该使用DomSanitizer.sanitize
方法(Angular在应用属性时使用它[url]="value | safe"
)
it('should transform', () => {
const safeResourceUrl = pipe.transform("Cross <script>alert('Hello')</script>");
const sanitizedValue = sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeResourceUrl);
expect(sanitizedValue).toBe("Cross <script>alert('Hello')</script>");
});
Run Code Online (Sandbox Code Playgroud)
PS.在这里,我假设您在toBe
语句中有拼写错误,并且您期望字符串将保存script
标记.
您可以在Plunker中找到完整示例
归档时间: |
|
查看次数: |
6166 次 |
最近记录: |