build-push-action/src/__tests__/setup-builder.test.ts
Aditya Maru 0f99a0b1c7 src: start sending get request with query params
We are incorrectly using formData in a get request. To move
away from this we send both query params and formData until
the server is fully upgraded. After which we can stop sending
formData.
2024-12-09 13:01:35 -05:00

54 lines
1.8 KiB
TypeScript

import * as reporter from '../reporter';
import { getStickyDisk } from '../setup_builder';
import FormData from 'form-data';
jest.mock('../reporter');
describe('getStickyDisk', () => {
const mockGet = jest.fn();
beforeEach(() => {
jest.resetAllMocks();
process.env.GITHUB_REPO_NAME = 'test-repo';
process.env.BLACKSMITH_REGION = 'test-region';
process.env.BLACKSMITH_INSTALLATION_MODEL_ID = 'test-model';
process.env.VM_ID = 'test-vm';
(reporter.createBlacksmithAgentClient as jest.Mock).mockResolvedValue({});
(reporter.get as jest.Mock).mockImplementation(mockGet);
mockGet.mockResolvedValue({
data: {
expose_id: 'test-expose-id',
disk_identifier: 'test-device'
}
});
});
it('sets both FormData and query parameters correctly', async () => {
const appendSpy = jest.spyOn(FormData.prototype, 'append');
await getStickyDisk();
expect(mockGet).toHaveBeenCalledTimes(1);
const [, url, formData] = mockGet.mock.calls[0];
// Verify query parameters
expect(url).toContain('stickyDiskKey=test-repo');
expect(url).toContain('region=test-region');
expect(url).toContain('installationModelID=test-model');
expect(url).toContain('vmID=test-vm');
// Verify FormData is correct type
expect(formData instanceof FormData).toBeTruthy();
// Verify the headers are set correctly
const headers = formData.getHeaders();
expect(headers['content-type']).toContain('multipart/form-data');
// Verify the correct fields were appended
expect(appendSpy).toHaveBeenCalledWith('stickyDiskKey', 'test-repo');
expect(appendSpy).toHaveBeenCalledWith('region', 'test-region');
expect(appendSpy).toHaveBeenCalledWith('installationModelID', 'test-model');
expect(appendSpy).toHaveBeenCalledWith('vmID', 'test-vm');
});
});