diff --git a/src/routes/LoginEnterprise.test.tsx b/src/routes/LoginEnterprise.test.tsx
index fbacb1dda..ebbc91c8c 100644
--- a/src/routes/LoginEnterprise.test.tsx
+++ b/src/routes/LoginEnterprise.test.tsx
@@ -2,6 +2,7 @@ import { fireEvent, render, screen } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import * as TestRenderer from 'react-test-renderer';
const { ipcRenderer } = require('electron');
+import { shell } from 'electron';
import { mockedEnterpriseAccounts } from '../__mocks__/mockedData';
import { AppContext } from '../context/App';
import type { AuthState } from '../types';
@@ -14,6 +15,8 @@ jest.mock('react-router-dom', () => ({
}));
describe('routes/LoginEnterprise.tsx', () => {
+ const openExternalMock = jest.spyOn(shell, 'openExternal');
+
const mockAccounts: AuthState = {
enterpriseAccounts: [],
user: null,
@@ -75,6 +78,40 @@ describe('routes/LoginEnterprise.tsx', () => {
expect(validate(values).clientSecret).toBe('Invalid client secret.');
});
+ describe("'Create new OAuth App' button", () => {
+ it('should be disabled if no hostname configured', async () => {
+ render(
+
+
+
+
+ ,
+ );
+
+ fireEvent.click(screen.getByText('Create new OAuth App'));
+
+ expect(openExternalMock).toHaveBeenCalledTimes(0);
+ });
+
+ it('should open if hostname configured', async () => {
+ render(
+
+
+
+
+ ,
+ );
+
+ fireEvent.change(screen.getByLabelText('Hostname'), {
+ target: { value: 'company.github.com' },
+ });
+
+ fireEvent.click(screen.getByText('Create new OAuth App'));
+
+ expect(openExternalMock).toHaveBeenCalledTimes(1);
+ });
+ });
+
it('should receive a logged-in enterprise account', () => {
const { rerender } = render(