import { shallow } from 'enzyme'; import { AccessTokenSender } from '../../../src/components/AccessTokenSender'; /** * Helper function to create a shallow wrapper around ErrorDialog */ function createWrapper(props) { return shallow( <AccessTokenSender t={key => key} handleAccessTokenMessage={() => {}} {...props} />, ); } describe('AccessTokenSender', () => { let wrapper; it('renders nothing if there is no url', () => { wrapper = createWrapper({}); expect(wrapper.isEmptyRender()).toBe(true); }); it('renders properly', () => { Object.defineProperty(window, 'origin', { value: 'http://localhost', writable: true, }); wrapper = createWrapper({ url: 'http://example.com' }); expect(wrapper.find('IComCom').length).toBe(1); expect(wrapper.find('IComCom').props().attributes.src).toBe('http://example.com?origin=http://localhost&messageId=http://example.com'); }); it('triggers an action when the iframe sends a message', () => { const handleAccessTokenMessage = jest.fn(); wrapper = createWrapper({ handleAccessTokenMessage, url: 'http://example.com' }); expect(wrapper.find('IComCom').props().handleReceiveMessage).toEqual(wrapper.instance().onReceiveAccessTokenMessage); wrapper.instance().onReceiveAccessTokenMessage({ data: { messageId: 'http://example.com' } }); expect(handleAccessTokenMessage).toHaveBeenCalledWith({ messageId: 'http://example.com' }); }); it('ignores iframe messages with the wrong messageId', () => { const handleAccessTokenMessage = jest.fn(); wrapper = createWrapper({ handleAccessTokenMessage, url: 'http://example.com' }); wrapper.instance().onReceiveAccessTokenMessage({ data: { messageId: 'http://example.com/123' } }); expect(handleAccessTokenMessage).not.toHaveBeenCalled(); }); });