diff --git a/src/components/wizard/RemoteConfigStep.test.tsx b/src/components/wizard/RemoteConfigStep.test.tsx index de5d305..5758461 100644 --- a/src/components/wizard/RemoteConfigStep.test.tsx +++ b/src/components/wizard/RemoteConfigStep.test.tsx @@ -448,4 +448,59 @@ describe('RemoteConfigStep', () => { }); }); }); + + describe('New backend form rendering (Plan 13-04)', () => { + it('gdrive renders GdriveAuthToggle with OAuth Token and Service Account tabs', async () => { + renderWithBackend('gdrive'); + await waitFor(() => { + expect(screen.getByText(/oauth token/i, { selector: 'button' })).toBeDefined(); + expect(screen.getByText(/service account/i, { selector: 'button' })).toBeDefined(); + }); + }); + + it('dropbox renders OAuthInstructions toggle button', async () => { + renderWithBackend('dropbox'); + await waitFor(() => { + expect(screen.getByRole('button', { name: /how to get your dropbox oauth token/i })).toBeDefined(); + }); + }); + + it('ftp renders host, username, password, port, TLS mode fields', async () => { + renderWithBackend('ftp'); + await waitFor(() => { + expect(screen.getByLabelText(/host/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/username/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/^password/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/port/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/tls mode/i)).toBeDefined(); + }); + }); + + it('webdav renders URL, username, password, vendor select fields', async () => { + renderWithBackend('webdav'); + await waitFor(() => { + expect(screen.getByLabelText(/webdav url/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/username/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/^password/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/vendor/i)).toBeDefined(); + }); + }); + + it('smb renders host and username fields', async () => { + renderWithBackend('smb'); + await waitFor(() => { + expect(screen.getByLabelText(/host/i, { selector: 'input' })).toBeDefined(); + expect(screen.getByLabelText(/username/i, { selector: 'input' })).toBeDefined(); + }); + }); + + it('http renders only URL field', async () => { + renderWithBackend('http'); + await waitFor(() => { + expect(screen.getByLabelText(/^url/i, { selector: 'input' })).toBeDefined(); + }); + // No username or password fields for http (read-only) + expect(screen.queryByLabelText(/username/i, { selector: 'input' })).toBeNull(); + }); + }); });