@@ -1413,3 +1413,102 @@ func Test_AdkApiTranslator_SandboxAgent_BYOEmitsSandbox(t *testing.T) {
14131413 require .False (t , sawDeploy )
14141414 require .False (t , sawService , "sandbox runtime must not include Service; agent-sandbox owns it" )
14151415}
1416+
1417+ func Test_AdkApiTranslator_AnthropicBaseURLEnvVar (t * testing.T ) {
1418+ scheme := schemev1 .Scheme
1419+ require .NoError (t , v1alpha2 .AddToScheme (scheme ))
1420+
1421+ namespace := "test-ns"
1422+
1423+ tests := []struct {
1424+ name string
1425+ baseURL string
1426+ wantEnvVar bool
1427+ wantEnvVarValue string
1428+ }{
1429+ {
1430+ name : "empty baseURL does not inject env var" ,
1431+ baseURL : "" ,
1432+ wantEnvVar : false ,
1433+ },
1434+ {
1435+ name : "custom baseURL injects ANTHROPIC_BASE_URL env var" ,
1436+ baseURL : "https://proxy.internal/anthropic/v1" ,
1437+ wantEnvVar : true ,
1438+ wantEnvVarValue : "https://proxy.internal/anthropic/v1" ,
1439+ },
1440+ {
1441+ name : "default Anthropic URL still injects env var" ,
1442+ baseURL : "https://api.anthropic.com" ,
1443+ wantEnvVar : true ,
1444+ wantEnvVarValue : "https://api.anthropic.com" ,
1445+ },
1446+ }
1447+
1448+ for _ , tt := range tests {
1449+ t .Run (tt .name , func (t * testing.T ) {
1450+ ns := & corev1.Namespace {ObjectMeta : metav1.ObjectMeta {Name : namespace }}
1451+
1452+ modelConfig := & v1alpha2.ModelConfig {
1453+ ObjectMeta : metav1.ObjectMeta {Name : "anthropic-model" , Namespace : namespace },
1454+ Spec : v1alpha2.ModelConfigSpec {
1455+ Provider : v1alpha2 .ModelProviderAnthropic ,
1456+ Model : "claude-3-sonnet-20240229" ,
1457+ APIKeySecret : "anthropic-secret" ,
1458+ Anthropic : & v1alpha2.AnthropicConfig {
1459+ BaseURL : tt .baseURL ,
1460+ },
1461+ },
1462+ }
1463+
1464+ agent := & v1alpha2.Agent {
1465+ ObjectMeta : metav1.ObjectMeta {Name : "test-agent" , Namespace : namespace },
1466+ Spec : v1alpha2.AgentSpec {
1467+ Type : v1alpha2 .AgentType_Declarative ,
1468+ Description : "Test Agent" ,
1469+ Declarative : & v1alpha2.DeclarativeAgentSpec {
1470+ SystemMessage : "You are a test agent" ,
1471+ ModelConfig : "anthropic-model" ,
1472+ },
1473+ },
1474+ }
1475+
1476+ kubeClient := fake .NewClientBuilder ().
1477+ WithScheme (scheme ).
1478+ WithObjects (ns , modelConfig , agent ).
1479+ Build ()
1480+
1481+ defaultModel := types.NamespacedName {Namespace : namespace , Name : "anthropic-model" }
1482+ trans := translator .NewAdkApiTranslator (kubeClient , defaultModel , nil , "" , nil )
1483+
1484+ outputs , err := translator .TranslateAgent (context .Background (), trans , agent )
1485+ require .NoError (t , err )
1486+ require .NotNil (t , outputs )
1487+
1488+ // Find the deployment and check env vars
1489+ var deployment * appsv1.Deployment
1490+ for _ , obj := range outputs .Manifest {
1491+ if d , ok := obj .(* appsv1.Deployment ); ok {
1492+ deployment = d
1493+ break
1494+ }
1495+ }
1496+ require .NotNil (t , deployment )
1497+
1498+ var found bool
1499+ for _ , envVar := range deployment .Spec .Template .Spec .Containers [0 ].Env {
1500+ if envVar .Name == "ANTHROPIC_BASE_URL" {
1501+ found = true
1502+ assert .Equal (t , tt .wantEnvVarValue , envVar .Value )
1503+ break
1504+ }
1505+ }
1506+
1507+ if tt .wantEnvVar {
1508+ assert .True (t , found , "expected ANTHROPIC_BASE_URL env var to be injected" )
1509+ } else {
1510+ assert .False (t , found , "did not expect ANTHROPIC_BASE_URL env var" )
1511+ }
1512+ })
1513+ }
1514+ }
0 commit comments