From c1e7fd4e41e18b0c28cf51a9272922021a21c0c8 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Fri, 17 May 2024 08:42:18 -0400 Subject: [PATCH] feat(auth): add `create oauth app` link to enterprise route --- src/routes/LoginEnterprise.test.tsx | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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(