mirror of https://github.com/abpframework/abp.git
1 changed files with 92 additions and 0 deletions
@ -0,0 +1,92 @@ |
|||||
|
import { |
||||
|
CONTENT_STRATEGY, |
||||
|
StyleContentStrategy, |
||||
|
ScriptContentStrategy, |
||||
|
DOM_STRATEGY, |
||||
|
CONTENT_SECURITY_STRATEGY, |
||||
|
} from '../strategies'; |
||||
|
import { uuid } from '../utils'; |
||||
|
|
||||
|
describe('StyleContentStrategy', () => { |
||||
|
describe('#createElement', () => { |
||||
|
it('should create a style element', () => { |
||||
|
const strategy = new StyleContentStrategy(''); |
||||
|
const element = strategy.createElement(); |
||||
|
|
||||
|
expect(element.tagName).toBe('STYLE'); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('#insertElement', () => { |
||||
|
it('should use given dom and content security strategies', () => { |
||||
|
const domStrategy = DOM_STRATEGY.PrependToHead(); |
||||
|
const contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(); |
||||
|
|
||||
|
contentSecurityStrategy.applyCSP = jest.fn((el: HTMLScriptElement) => {}); |
||||
|
domStrategy.insertElement = jest.fn((el: HTMLScriptElement) => {}) as any; |
||||
|
|
||||
|
const strategy = new StyleContentStrategy('', domStrategy, contentSecurityStrategy); |
||||
|
const element = strategy.createElement(); |
||||
|
strategy.insertElement(); |
||||
|
|
||||
|
expect(contentSecurityStrategy.applyCSP).toHaveBeenCalledWith(element); |
||||
|
expect(domStrategy.insertElement).toHaveBeenCalledWith(element); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('ScriptContentStrategy', () => { |
||||
|
describe('#createElement', () => { |
||||
|
it('should create a style element', () => { |
||||
|
const nonce = uuid(); |
||||
|
const strategy = new ScriptContentStrategy(''); |
||||
|
const element = strategy.createElement(); |
||||
|
|
||||
|
expect(element.tagName).toBe('SCRIPT'); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('#insertElement', () => { |
||||
|
it('should use given dom and content security strategies', () => { |
||||
|
const nonce = uuid(); |
||||
|
|
||||
|
const domStrategy = DOM_STRATEGY.PrependToHead(); |
||||
|
const contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.Loose(nonce); |
||||
|
|
||||
|
contentSecurityStrategy.applyCSP = jest.fn((el: HTMLScriptElement) => {}); |
||||
|
domStrategy.insertElement = jest.fn((el: HTMLScriptElement) => {}) as any; |
||||
|
|
||||
|
const strategy = new ScriptContentStrategy('', domStrategy, contentSecurityStrategy); |
||||
|
const element = strategy.createElement(); |
||||
|
strategy.insertElement(); |
||||
|
|
||||
|
expect(contentSecurityStrategy.applyCSP).toHaveBeenCalledWith(element); |
||||
|
expect(domStrategy.insertElement).toHaveBeenCalledWith(element); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
// describe('CONTENT_SECURITY_STRATEGY', () => {
|
||||
|
// test.each`
|
||||
|
// name | Strategy | nonce
|
||||
|
// ${'Loose'} | ${LooseContentSecurityStrategy} | ${uuid()}
|
||||
|
// ${'None'} | ${NoContentSecurityStrategy} | ${undefined}
|
||||
|
// `('should successfully map $name to $Strategy.name', ({ name, Strategy, nonce }) => {
|
||||
|
// expect(CONTENT_SECURITY_STRATEGY[name](nonce)).toEqual(new Strategy(nonce));
|
||||
|
// });
|
||||
|
// });
|
||||
|
|
||||
|
describe('CONTENT_STRATEGY', () => { |
||||
|
test.each` |
||||
|
name | Strategy | domStrategy |
||||
|
${'AppendScriptToBody'} | ${ScriptContentStrategy} | ${'AppendToBody'} |
||||
|
${'AppendScriptToHead'} | ${ScriptContentStrategy} | ${'AppendToHead'} |
||||
|
${'AppendStyleToHead'} | ${StyleContentStrategy} | ${'AppendToHead'} |
||||
|
${'PrependStyleToHead'} | ${StyleContentStrategy} | ${'PrependToHead'} |
||||
|
`(
|
||||
|
'should successfully map $name to $Strategy.name with $domStrategy dom strategy', |
||||
|
({ name, Strategy, domStrategy }) => { |
||||
|
expect(CONTENT_STRATEGY[name]('')).toEqual(new Strategy('', DOM_STRATEGY[domStrategy]())); |
||||
|
}, |
||||
|
); |
||||
|
}); |
||||
Loading…
Reference in new issue