fix(compiler): strip <script> tag from templates
Fixes #2766 Closes #3486
This commit is contained in:
@@ -1130,6 +1130,22 @@ export function main() {
|
||||
}));
|
||||
});
|
||||
|
||||
describe("corner cases", () => {
|
||||
it('should remove script tags from templates',
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
|
||||
tcb.overrideView(MyComp, new viewAnn.View({
|
||||
template: `
|
||||
<script>alert("Ooops");</script>
|
||||
<div>before<script>alert("Ooops");</script><span>inside</span>after</div>`
|
||||
}))
|
||||
.createAsync(MyComp)
|
||||
.then((rootTC) => {
|
||||
expect(DOM.querySelectorAll(rootTC.nativeElement, 'script').length).toEqual(0);
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
describe("error handling", () => {
|
||||
it('should report a meaningful error when a directive is missing annotation',
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
|
||||
|
||||
@@ -131,6 +131,16 @@ export function runCompilerCommonTests() {
|
||||
});
|
||||
}));
|
||||
|
||||
it('should remove script tags from templates', inject([AsyncTestCompleter], (async) => {
|
||||
var compiler = createCompiler(EMPTY_STEP);
|
||||
compiler.compile(new ViewDefinition(
|
||||
{componentId: 'someId', template: '<div></div><script></script>'}))
|
||||
.then((protoView) => {
|
||||
expect(DOM.getInnerHTML(templateRoot(protoView))).toEqual('<div></div>');
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
|
||||
it('should report loading errors', inject([AsyncTestCompleter], (async) => {
|
||||
var compiler = createCompiler(EMPTY_STEP, null, new Map());
|
||||
PromiseWrapper.catchError(
|
||||
|
||||
Reference in New Issue
Block a user