@@ -377,6 +377,140 @@ func TestAnalyzeFlagArgs(t *testing.T) {
377377 })
378378}
379379
380+ //nolint:funlen
381+ func TestAnalyze_zone_sync (t * testing.T ) {
382+ t .Parallel ()
383+ testcases := map [string ]struct {
384+ stmt * Directive
385+ ctx blockCtx
386+ wantErr bool
387+ }{
388+ "zone_sync in stream server context ok" : {
389+ & Directive {
390+ Directive : "zone_sync" ,
391+ Args : []string {},
392+ Line : 5 ,
393+ },
394+ blockCtx {"stream" , "server" },
395+ false ,
396+ },
397+ "zone_sync invalid context" : {
398+ & Directive {
399+ Directive : "zone_sync" ,
400+ Args : []string {},
401+ Line : 5 ,
402+ },
403+ blockCtx {"stream" },
404+ true ,
405+ },
406+ "zone_sync invalid args" : {
407+ & Directive {
408+ Directive : "zone_sync" ,
409+ Args : []string {"invalid" },
410+ Line : 5 ,
411+ },
412+ blockCtx {"stream" , "server" },
413+ true ,
414+ },
415+ "zone_sync_ssl in stream context ok" : {
416+ & Directive {
417+ Directive : "zone_sync_ssl" ,
418+ Args : []string {"off" },
419+ Line : 5 ,
420+ },
421+ blockCtx {"stream" },
422+ false ,
423+ },
424+ "zone_sync_ssl in stream server context ok" : {
425+ & Directive {
426+ Directive : "zone_sync_ssl" ,
427+ Args : []string {"on" },
428+ Line : 5 ,
429+ },
430+ blockCtx {"stream" , "server" },
431+ false ,
432+ },
433+ "zone_sync_ssl invalid context" : {
434+ & Directive {
435+ Directive : "zone_sync_ssl" ,
436+ Args : []string {"off" },
437+ Line : 5 ,
438+ },
439+ blockCtx {"http" },
440+ true ,
441+ },
442+ "zone_sync_ssl invalid args" : {
443+ & Directive {
444+ Directive : "zone_sync_ssl" ,
445+ Args : []string {"invalid" },
446+ Line : 5 ,
447+ },
448+ blockCtx {"stream" },
449+ true ,
450+ },
451+ "zone_sync_ssl_conf_command in stream context ok" : {
452+ & Directive {
453+ Directive : "zone_sync_ssl_conf_command" ,
454+ Args : []string {"somename" , "somevalue" },
455+ Line : 5 ,
456+ },
457+ blockCtx {"stream" },
458+ false ,
459+ },
460+ "zone_sync_ssl_conf_command in stream server context ok" : {
461+ & Directive {
462+ Directive : "zone_sync_ssl_conf_command" ,
463+ Args : []string {"somename" , "somevalue" },
464+ Line : 5 ,
465+ },
466+ blockCtx {"stream" , "server" },
467+ false ,
468+ },
469+ "zone_sync_ssl_conf_command invalid context" : {
470+ & Directive {
471+ Directive : "zone_sync_ssl_conf_command" ,
472+ Args : []string {"somename" , "somevalue" },
473+ Line : 5 ,
474+ },
475+ blockCtx {"http" , "server" },
476+ true ,
477+ },
478+ "zone_sync_ssl_conf_command missing one arg" : {
479+ & Directive {
480+ Directive : "zone_sync_ssl_conf_command" ,
481+ Args : []string {"somename" },
482+ Line : 5 ,
483+ },
484+ blockCtx {"stream" , "server" },
485+ true ,
486+ },
487+ "zone_sync_ssl_conf_command missing both args" : {
488+ & Directive {
489+ Directive : "zone_sync_ssl_conf_command" ,
490+ Args : []string {},
491+ Line : 5 ,
492+ },
493+ blockCtx {"stream" , "server" },
494+ true ,
495+ },
496+ }
497+
498+ for name , tc := range testcases {
499+ tc := tc
500+ t .Run (name , func (t * testing.T ) {
501+ t .Parallel ()
502+ err := analyze ("nginx.conf" , tc .stmt , ";" , tc .ctx , & ParseOptions {})
503+ if ! tc .wantErr && err != nil {
504+ t .Fatal (err )
505+ }
506+
507+ if tc .wantErr && err == nil {
508+ t .Fatal ("expected error, got nil" )
509+ }
510+ })
511+ }
512+ }
513+
380514func TestAnalyze_nap_app_protect_enable (t * testing.T ) {
381515 t .Parallel ()
382516 testcases := map [string ]struct {
0 commit comments