77 EnvVarSchema ,
88 GatewayNameSchema ,
99 InstrumentationSchema ,
10+ NetworkConfigSchema ,
1011} from '../agent-env.js' ;
1112import { describe , expect , it } from 'vitest' ;
1213
@@ -235,13 +236,51 @@ describe('AgentEnvSpecSchema', () => {
235236
236237 it ( 'accepts agent with network mode' , ( ) => {
237238 expect ( AgentEnvSpecSchema . safeParse ( { ...validPythonAgent , networkMode : 'PUBLIC' } ) . success ) . toBe ( true ) ;
238- expect ( AgentEnvSpecSchema . safeParse ( { ...validPythonAgent , networkMode : 'PRIVATE' } ) . success ) . toBe ( true ) ;
239+ expect (
240+ AgentEnvSpecSchema . safeParse ( {
241+ ...validPythonAgent ,
242+ networkMode : 'VPC' ,
243+ networkConfig : {
244+ subnets : [ 'subnet-12345678' ] ,
245+ securityGroups : [ 'sg-12345678' ] ,
246+ } ,
247+ } ) . success
248+ ) . toBe ( true ) ;
239249 } ) ;
240250
241251 it ( 'rejects invalid network mode' , ( ) => {
252+ expect ( AgentEnvSpecSchema . safeParse ( { ...validPythonAgent , networkMode : 'PRIVATE' } ) . success ) . toBe ( false ) ;
253+ } ) ;
254+
255+ it ( 'rejects VPC mode without networkConfig' , ( ) => {
242256 expect ( AgentEnvSpecSchema . safeParse ( { ...validPythonAgent , networkMode : 'VPC' } ) . success ) . toBe ( false ) ;
243257 } ) ;
244258
259+ it ( 'rejects networkConfig without VPC mode' , ( ) => {
260+ expect (
261+ AgentEnvSpecSchema . safeParse ( {
262+ ...validPythonAgent ,
263+ networkMode : 'PUBLIC' ,
264+ networkConfig : {
265+ subnets : [ 'subnet-12345678' ] ,
266+ securityGroups : [ 'sg-12345678' ] ,
267+ } ,
268+ } ) . success
269+ ) . toBe ( false ) ;
270+ } ) ;
271+
272+ it ( 'rejects networkConfig with missing networkMode' , ( ) => {
273+ expect (
274+ AgentEnvSpecSchema . safeParse ( {
275+ ...validPythonAgent ,
276+ networkConfig : {
277+ subnets : [ 'subnet-12345678' ] ,
278+ securityGroups : [ 'sg-12345678' ] ,
279+ } ,
280+ } ) . success
281+ ) . toBe ( false ) ;
282+ } ) ;
283+
245284 it ( 'accepts agent with instrumentation config' , ( ) => {
246285 const result = AgentEnvSpecSchema . safeParse ( {
247286 ...validPythonAgent ,
@@ -259,3 +298,53 @@ describe('AgentEnvSpecSchema', () => {
259298 expect ( AgentEnvSpecSchema . safeParse ( { ...validPythonAgent , name : undefined } ) . success ) . toBe ( false ) ;
260299 } ) ;
261300} ) ;
301+
302+ describe ( 'NetworkConfigSchema' , ( ) => {
303+ it ( 'accepts valid network config' , ( ) => {
304+ const result = NetworkConfigSchema . safeParse ( {
305+ subnets : [ 'subnet-12345678' ] ,
306+ securityGroups : [ 'sg-12345678' ] ,
307+ } ) ;
308+ expect ( result . success ) . toBe ( true ) ;
309+ } ) ;
310+
311+ it ( 'accepts multiple subnets and security groups' , ( ) => {
312+ const result = NetworkConfigSchema . safeParse ( {
313+ subnets : [ 'subnet-12345678' , 'subnet-abcdef12' ] ,
314+ securityGroups : [ 'sg-12345678' , 'sg-abcdef12' ] ,
315+ } ) ;
316+ expect ( result . success ) . toBe ( true ) ;
317+ } ) ;
318+
319+ it ( 'rejects empty subnets array' , ( ) => {
320+ const result = NetworkConfigSchema . safeParse ( {
321+ subnets : [ ] ,
322+ securityGroups : [ 'sg-12345678' ] ,
323+ } ) ;
324+ expect ( result . success ) . toBe ( false ) ;
325+ } ) ;
326+
327+ it ( 'rejects empty security groups array' , ( ) => {
328+ const result = NetworkConfigSchema . safeParse ( {
329+ subnets : [ 'subnet-12345678' ] ,
330+ securityGroups : [ ] ,
331+ } ) ;
332+ expect ( result . success ) . toBe ( false ) ;
333+ } ) ;
334+
335+ it ( 'rejects invalid subnet format' , ( ) => {
336+ const result = NetworkConfigSchema . safeParse ( {
337+ subnets : [ 'invalid-subnet' ] ,
338+ securityGroups : [ 'sg-12345678' ] ,
339+ } ) ;
340+ expect ( result . success ) . toBe ( false ) ;
341+ } ) ;
342+
343+ it ( 'rejects invalid security group format' , ( ) => {
344+ const result = NetworkConfigSchema . safeParse ( {
345+ subnets : [ 'subnet-12345678' ] ,
346+ securityGroups : [ 'invalid-sg' ] ,
347+ } ) ;
348+ expect ( result . success ) . toBe ( false ) ;
349+ } ) ;
350+ } ) ;
0 commit comments