mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import {GitHubIntegrationFixture} from 'sentry-fixture/githubIntegration';
|
|
import {GitHubIntegrationProviderFixture} from 'sentry-fixture/githubIntegrationProvider';
|
|
import {OrganizationFixture} from 'sentry-fixture/organization';
|
|
|
|
import {render, waitFor} from 'sentry-test/reactTestingLibrary';
|
|
|
|
import type {Config} from 'sentry/types';
|
|
import AddIntegration from 'sentry/views/settings/organizationIntegrations/addIntegration';
|
|
|
|
describe('AddIntegration', function () {
|
|
const provider = GitHubIntegrationProviderFixture();
|
|
const integration = GitHubIntegrationFixture();
|
|
|
|
function interceptMessageEvent(event: MessageEvent) {
|
|
if (event.origin === '') {
|
|
event.stopImmediatePropagation();
|
|
const eventWithOrigin = new MessageEvent('message', {
|
|
data: event.data,
|
|
origin: 'https://foobar.sentry.io',
|
|
});
|
|
window.dispatchEvent(eventWithOrigin);
|
|
}
|
|
}
|
|
|
|
beforeEach(function () {
|
|
window.__initialData = {
|
|
customerDomain: {
|
|
subdomain: 'foobar',
|
|
organizationUrl: 'https://foobar.sentry.io',
|
|
sentryUrl: 'https://sentry.io',
|
|
},
|
|
links: {
|
|
organizationUrl: 'https://foobar.sentry.io',
|
|
regionUrl: 'https://us.sentry.io',
|
|
sentryUrl: 'https://sentry.io',
|
|
},
|
|
} as Config;
|
|
|
|
window.location.assign('https://foobar.sentry.io');
|
|
window.addEventListener('message', interceptMessageEvent);
|
|
});
|
|
|
|
afterEach(function () {
|
|
window.removeEventListener('message', interceptMessageEvent);
|
|
});
|
|
|
|
it('Adds an integration on dialog completion', async function () {
|
|
const onAdd = jest.fn();
|
|
|
|
const focus = jest.fn();
|
|
const open = jest.fn().mockReturnValue({focus});
|
|
global.open = open;
|
|
|
|
render(
|
|
<AddIntegration
|
|
organization={OrganizationFixture()}
|
|
provider={provider}
|
|
onInstall={onAdd}
|
|
>
|
|
{openDialog => (
|
|
<a href="#" onClick={() => openDialog()}>
|
|
Click
|
|
</a>
|
|
)}
|
|
</AddIntegration>
|
|
);
|
|
|
|
const newIntegration = {
|
|
success: true,
|
|
data: Object.assign({}, integration, {
|
|
id: '2',
|
|
domain_name: 'new-integration.github.com',
|
|
icon: 'http://example.com/new-integration-icon.png',
|
|
name: 'New Integration',
|
|
}),
|
|
};
|
|
|
|
window.postMessage(newIntegration, '*');
|
|
await waitFor(() => expect(onAdd).toHaveBeenCalledWith(newIntegration.data));
|
|
});
|
|
});
|