@@ -9,19 +9,13 @@ const { mockIsHosted, mockIsAzureConfigured, mockIsOllamaConfigured } = vi.hoist
99 mockIsOllamaConfigured : { value : false } ,
1010} ) )
1111
12- const {
13- mockGetHostedModels,
14- mockGetProviderModels,
15- mockGetProviderIcon,
16- mockGetProviderFromModel,
17- mockGetBaseModelProviders,
18- } = vi . hoisted ( ( ) => ( {
19- mockGetHostedModels : vi . fn ( ( ) => [ ] ) ,
20- mockGetProviderModels : vi . fn ( ( ) => [ ] ) ,
21- mockGetProviderIcon : vi . fn ( ( ) => null ) ,
22- mockGetProviderFromModel : vi . fn ( ( ) => 'ollama' ) ,
23- mockGetBaseModelProviders : vi . fn ( ( ) => ( { } ) ) ,
24- } ) )
12+ const { mockGetHostedModels, mockGetProviderModels, mockGetProviderIcon, mockGetBaseModelProviders } =
13+ vi . hoisted ( ( ) => ( {
14+ mockGetHostedModels : vi . fn ( ( ) => [ ] ) ,
15+ mockGetProviderModels : vi . fn ( ( ) => [ ] ) ,
16+ mockGetProviderIcon : vi . fn ( ( ) => null ) ,
17+ mockGetBaseModelProviders : vi . fn ( ( ) => ( { } ) ) ,
18+ } ) )
2519
2620const { mockProviders } = vi . hoisted ( ( ) => ( {
2721 mockProviders : {
@@ -51,7 +45,6 @@ vi.mock('@/providers/models', () => ({
5145 getHostedModels : mockGetHostedModels ,
5246 getProviderModels : mockGetProviderModels ,
5347 getProviderIcon : mockGetProviderIcon ,
54- getProviderFromModel : mockGetProviderFromModel ,
5548 getBaseModelProviders : mockGetBaseModelProviders ,
5649} ) )
5750
@@ -71,30 +64,6 @@ vi.mock('@/lib/oauth/utils', () => ({
7164
7265import { getApiKeyCondition } from '@/blocks/utils'
7366
74- /**
75- * Simulates getProviderFromModel behavior: checks known prefix patterns,
76- * defaults to 'ollama' for unrecognized models (matching real implementation).
77- */
78- function simulateGetProviderFromModel ( model : string ) : string {
79- const m = model . toLowerCase ( )
80- if ( m . startsWith ( 'fireworks/' ) ) return 'fireworks'
81- if ( m . startsWith ( 'openrouter/' ) ) return 'openrouter'
82- if ( m . startsWith ( 'vllm/' ) ) return 'vllm'
83- if ( m . startsWith ( 'vertex/' ) ) return 'vertex'
84- if ( m . startsWith ( 'bedrock/' ) ) return 'bedrock'
85- if ( m . startsWith ( 'azure/' ) ) return 'azure-openai'
86- if ( m . startsWith ( 'azure-openai/' ) ) return 'azure-openai'
87- if ( m . startsWith ( 'azure-anthropic/' ) ) return 'azure-anthropic'
88- if ( m . startsWith ( 'groq/' ) ) return 'groq'
89- if ( m . startsWith ( 'cerebras/' ) ) return 'cerebras'
90- if ( / ^ g p t / . test ( m ) || / ^ o \d / . test ( m ) ) return 'openai'
91- if ( / ^ c l a u d e / . test ( m ) ) return 'anthropic'
92- if ( / ^ g e m i n i / . test ( m ) ) return 'google'
93- if ( / ^ g r o k / . test ( m ) ) return 'xai'
94- if ( / ^ m i s t r a l / . test ( m ) || / ^ m a g i s t r a l / . test ( m ) ) return 'mistral'
95- return 'ollama'
96- }
97-
9867const BASE_CLOUD_MODELS : Record < string , string > = {
9968 'gpt-4o' : 'openai' ,
10069 'claude-sonnet-4-5' : 'anthropic' ,
@@ -125,7 +94,6 @@ describe('getApiKeyCondition / shouldRequireApiKeyForModel', () => {
12594 }
12695 mockGetHostedModels . mockReturnValue ( [ ] )
12796 mockGetProviderModels . mockReturnValue ( [ ] )
128- mockGetProviderFromModel . mockImplementation ( simulateGetProviderFromModel )
12997 mockGetBaseModelProviders . mockReturnValue ( { } )
13098 } )
13199
@@ -278,26 +246,13 @@ describe('getApiKeyCondition / shouldRequireApiKeyForModel', () => {
278246 } )
279247 } )
280248
281- describe ( 'self-hosted getProviderFromModel fallback' , ( ) => {
282- it ( 'does not require API key when getProviderFromModel defaults to ollama' , ( ) => {
283- mockIsHosted . value = false
284- mockIsOllamaConfigured . value = false
285- expect ( evaluateCondition ( 'llama3:latest' ) ) . toBe ( false )
286- expect ( evaluateCondition ( 'phi3:latest' ) ) . toBe ( false )
287- } )
288-
289- it ( 'requires API key when getProviderFromModel returns a cloud provider' , ( ) => {
249+ describe ( 'self-hosted without OLLAMA_URL' , ( ) => {
250+ it ( 'requires API key for any model (Ollama models cannot appear without OLLAMA_URL)' , ( ) => {
290251 mockIsHosted . value = false
291252 mockIsOllamaConfigured . value = false
292- expect ( evaluateCondition ( 'mistral:latest' ) ) . toBe ( true )
293- expect ( evaluateCondition ( 'gpt2' ) ) . toBe ( true )
294- } )
295-
296- it ( 'does not run getProviderFromModel fallback on hosted platform' , ( ) => {
297- mockIsHosted . value = true
298- mockGetHostedModels . mockReturnValue ( [ ] )
299253 expect ( evaluateCondition ( 'llama3:latest' ) ) . toBe ( true )
300- expect ( mockGetProviderFromModel ) . not . toHaveBeenCalled ( )
254+ expect ( evaluateCondition ( 'mistral:latest' ) ) . toBe ( true )
255+ expect ( evaluateCondition ( 'gpt-4o' ) ) . toBe ( true )
301256 } )
302257 } )
303258} )
0 commit comments