|
@@ -0,0 +1,82 @@
|
|
|
+import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
|
+import { get } from '../src/utils'
|
|
|
+
|
|
|
+describe('get Function Header Tests', () => {
|
|
|
+ const mockFetch = vi.fn();
|
|
|
+ const mockResponse = new Response(null, { status: 200 });
|
|
|
+
|
|
|
+ beforeEach(() => {
|
|
|
+ mockFetch.mockReset();
|
|
|
+ mockFetch.mockResolvedValue(mockResponse);
|
|
|
+ });
|
|
|
+
|
|
|
+ const defaultHeaders = {
|
|
|
+ 'Content-Type': 'application/json',
|
|
|
+ 'Accept': 'application/json',
|
|
|
+ 'User-Agent': expect.stringMatching(/ollama-js\/.*/)
|
|
|
+ };
|
|
|
+
|
|
|
+ it('should use default headers when no headers provided', async () => {
|
|
|
+ await get(mockFetch, 'http://example.com');
|
|
|
+
|
|
|
+ expect(mockFetch).toHaveBeenCalledWith('http://example.com', {
|
|
|
+ headers: expect.objectContaining(defaultHeaders)
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should handle Headers instance', async () => {
|
|
|
+ const customHeaders = new Headers({
|
|
|
+ 'Authorization': 'Bearer token',
|
|
|
+ 'X-Custom': 'value'
|
|
|
+ });
|
|
|
+
|
|
|
+ await get(mockFetch, 'http://example.com', { headers: customHeaders });
|
|
|
+
|
|
|
+ expect(mockFetch).toHaveBeenCalledWith('http://example.com', {
|
|
|
+ headers: expect.objectContaining({
|
|
|
+ ...defaultHeaders,
|
|
|
+ 'authorization': 'Bearer token',
|
|
|
+ 'x-custom': 'value'
|
|
|
+ })
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should handle plain object headers', async () => {
|
|
|
+ const customHeaders = {
|
|
|
+ 'Authorization': 'Bearer token',
|
|
|
+ 'X-Custom': 'value'
|
|
|
+ };
|
|
|
+
|
|
|
+ await get(mockFetch, 'http://example.com', { headers: customHeaders });
|
|
|
+
|
|
|
+ expect(mockFetch).toHaveBeenCalledWith('http://example.com', {
|
|
|
+ headers: expect.objectContaining({
|
|
|
+ ...defaultHeaders,
|
|
|
+ 'Authorization': 'Bearer token',
|
|
|
+ 'X-Custom': 'value'
|
|
|
+ })
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should not allow custom headers to override default User-Agent', async () => {
|
|
|
+ const customHeaders = {
|
|
|
+ 'User-Agent': 'custom-agent'
|
|
|
+ };
|
|
|
+
|
|
|
+ await get(mockFetch, 'http://example.com', { headers: customHeaders });
|
|
|
+
|
|
|
+ expect(mockFetch).toHaveBeenCalledWith('http://example.com', {
|
|
|
+ headers: expect.objectContaining({
|
|
|
+ 'User-Agent': expect.stringMatching(/ollama-js\/.*/)
|
|
|
+ })
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should handle empty headers object', async () => {
|
|
|
+ await get(mockFetch, 'http://example.com', { headers: {} });
|
|
|
+
|
|
|
+ expect(mockFetch).toHaveBeenCalledWith('http://example.com', {
|
|
|
+ headers: expect.objectContaining(defaultHeaders)
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|