@@ -482,16 +482,39 @@ func createExpectedConfigForMergeableCafeIngress() IngressNginxConfig {
482
482
483
483
}
484
484
485
- func createTestConfigurator () * Configurator {
486
- templateExecutor , _ := NewTemplateExecutor ("templates/nginx-plus.tmpl" , "templates/nginx-plus.ingress.tmpl" , true , true , 8080 )
485
+ func createTestConfigurator () (* Configurator , error ) {
486
+ templateExecutor , err := NewTemplateExecutor ("templates/nginx-plus.tmpl" , "templates/nginx-plus.ingress.tmpl" , true , true , 8080 )
487
+ if err != nil {
488
+ return nil , err
489
+ }
490
+ ngxc := NewNginxController ("/etc/nginx" , true )
491
+ apiCtrl , err := plus .NewNginxAPIController (& http.Client {}, "" , true )
492
+ if err != nil {
493
+ return nil , err
494
+ }
495
+ return NewConfigurator (ngxc , NewDefaultConfig (), apiCtrl , templateExecutor ), nil
496
+ }
497
+
498
+ func createTestConfiguratorInvalidIngressTemplate () (* Configurator , error ) {
499
+ templateExecutor , err := NewTemplateExecutor ("templates/nginx-plus.tmpl" , "templates/nginx-plus.ingress.tmpl" , true , true , 8080 )
500
+ if err != nil {
501
+ return nil , err
502
+ }
503
+ invalidIngressTemplate := "{{.Upstreams.This.Field.Does.Not.Exist}}"
504
+ if err := templateExecutor .UpdateIngressTemplate (& invalidIngressTemplate ); err != nil {
505
+ return nil , err
506
+ }
487
507
ngxc := NewNginxController ("/etc/nginx" , true )
488
508
apiCtrl , _ := plus .NewNginxAPIController (& http.Client {}, "" , true )
489
- return NewConfigurator (ngxc , NewDefaultConfig (), apiCtrl , templateExecutor )
509
+ return NewConfigurator (ngxc , NewDefaultConfig (), apiCtrl , templateExecutor ), nil
490
510
}
491
511
492
512
func TestGenerateNginxCfg (t * testing.T ) {
493
513
cafeIngressEx := createCafeIngressEx ()
494
- cnf := createTestConfigurator ()
514
+ cnf , err := createTestConfigurator ()
515
+ if err != nil {
516
+ t .Errorf ("Failed to create a test configurator: %v" , err )
517
+ }
495
518
expected := createExpectedConfigForCafeIngressEx ()
496
519
497
520
pems := map [string ]string {
@@ -514,7 +537,10 @@ func TestGenerateNginxCfgForJWT(t *testing.T) {
514
537
cafeIngressEx .Ingress .Annotations ["nginx.com/jwt-login-url" ] = "https://login.example.com"
515
538
cafeIngressEx .JWTKey = & api_v1.Secret {}
516
539
517
- cnf := createTestConfigurator ()
540
+ cnf , err := createTestConfigurator ()
541
+ if err != nil {
542
+ t .Errorf ("Failed to create a test configurator: %v" , err )
543
+ }
518
544
expected := createExpectedConfigForCafeIngressEx ()
519
545
expected .Servers [0 ].JWTAuth = & JWTAuth {
520
546
Key : "/etc/nginx/secrets/default-cafe-jwk" ,
@@ -547,7 +573,10 @@ func TestGenerateNginxCfgForMergeableIngresses(t *testing.T) {
547
573
mergeableIngresses := createMergeableCafeIngress ()
548
574
expected := createExpectedConfigForMergeableCafeIngress ()
549
575
550
- cnf := createTestConfigurator ()
576
+ cnf , err := createTestConfigurator ()
577
+ if err != nil {
578
+ t .Errorf ("Failed to create a test configurator: %v" , err )
579
+ }
551
580
552
581
result := cnf .generateNginxCfgForMergeableIngresses (mergeableIngresses )
553
582
@@ -604,7 +633,10 @@ func TestGenerateNginxCfgForMergeableIngressesForJWT(t *testing.T) {
604
633
},
605
634
}
606
635
607
- cnf := createTestConfigurator ()
636
+ cnf , err := createTestConfigurator ()
637
+ if err != nil {
638
+ t .Errorf ("Failed to create a test configurator: %v" , err )
639
+ }
608
640
609
641
result := cnf .generateNginxCfgForMergeableIngresses (mergeableIngresses )
610
642
@@ -618,3 +650,129 @@ func TestGenerateNginxCfgForMergeableIngressesForJWT(t *testing.T) {
618
650
t .Errorf ("generateNginxCfgForMergeableIngresses returned \n %v, but expected \n %v" , result .Servers [0 ].JWTRedirectLocations , expected .Servers [0 ].JWTRedirectLocations )
619
651
}
620
652
}
653
+
654
+ func TestAddOrUpdateIngress (t * testing.T ) {
655
+ cnf , err := createTestConfigurator ()
656
+ if err != nil {
657
+ t .Errorf ("Failed to create a test configurator: %v" , err )
658
+ }
659
+ ingress := createCafeIngressEx ()
660
+ err = cnf .AddOrUpdateIngress (& ingress )
661
+ if err != nil {
662
+ t .Errorf ("AddOrUpdateIngress returned: \n %v, but expected: \n %v" , err , nil )
663
+ }
664
+
665
+ cnfHasIngress := cnf .HasIngress (ingress .Ingress )
666
+ if ! cnfHasIngress {
667
+ t .Errorf ("AddOrUpdateIngress didn't add ingress successfully. HasIngress returned %v, expected %v" , cnfHasIngress , true )
668
+ }
669
+ }
670
+
671
+ func TestAddOrUpdateMergeableIngress (t * testing.T ) {
672
+ cnf , err := createTestConfigurator ()
673
+ if err != nil {
674
+ t .Errorf ("Failed to create a test configurator: %v" , err )
675
+ }
676
+ mergeableIngess := createMergeableCafeIngress ()
677
+ err = cnf .AddOrUpdateMergeableIngress (mergeableIngess )
678
+ if err != nil {
679
+ t .Errorf ("AddOrUpdateMergeableIngress returned \n %v, expected \n %v" , err , nil )
680
+ }
681
+
682
+ cnfHasMergeableIngress := cnf .HasIngress (mergeableIngess .Master .Ingress )
683
+ if ! cnfHasMergeableIngress {
684
+ t .Errorf ("AddOrUpdateMergeableIngress didn't add mergeable ingress successfully. HasIngress returned %v, expected %v" , cnfHasMergeableIngress , true )
685
+ }
686
+ }
687
+
688
+ func TestAddOrUpdateIngressFailsWithInvalidIngressTemplate (t * testing.T ) {
689
+ cnf , err := createTestConfiguratorInvalidIngressTemplate ()
690
+ if err != nil {
691
+ t .Errorf ("Failed to create a test configurator: %v" , err )
692
+ }
693
+
694
+ ingress := createCafeIngressEx ()
695
+ err = cnf .AddOrUpdateIngress (& ingress )
696
+ if err == nil {
697
+ t .Errorf ("AddOrUpdateIngressFailsWithInvalidTemplate returned \n %v, but expected \n %v" , nil , "template execution error" )
698
+ }
699
+ }
700
+
701
+ func TestAddOrUpdateMergeableIngressFailsWithInvalidIngressTemplate (t * testing.T ) {
702
+ cnf , err := createTestConfiguratorInvalidIngressTemplate ()
703
+ if err != nil {
704
+ t .Errorf ("Failed to create a test configurator: %v" , err )
705
+ }
706
+
707
+ mergeableIngess := createMergeableCafeIngress ()
708
+ err = cnf .AddOrUpdateMergeableIngress (mergeableIngess )
709
+ if err == nil {
710
+ t .Errorf ("AddOrUpdateMergeableIngress returned \n %v, but expected \n %v" , nil , "template execution error" )
711
+ }
712
+ }
713
+
714
+ func TestUpdateEndpoints (t * testing.T ) {
715
+ cnf , err := createTestConfigurator ()
716
+ if err != nil {
717
+ t .Errorf ("Failed to create a test configurator: %v" , err )
718
+ }
719
+
720
+ ingress := createCafeIngressEx ()
721
+ err = cnf .UpdateEndpoints (& ingress )
722
+ if err != nil {
723
+ t .Errorf ("UpdateEndpoints returned\n %v, but expected \n %v" , err , nil )
724
+ }
725
+
726
+ // test with OSS Configurator
727
+ cnf .nginxAPI = nil
728
+ err = cnf .UpdateEndpoints (& ingress )
729
+ if err != nil {
730
+ t .Errorf ("UpdateEndpoints returned\n %v, but expected \n %v" , err , nil )
731
+ }
732
+ }
733
+
734
+ func TestUpdateEndpointsMergeableIngress (t * testing.T ) {
735
+ cnf , err := createTestConfigurator ()
736
+ if err != nil {
737
+ t .Errorf ("Failed to create a test configurator: %v" , err )
738
+ }
739
+
740
+ mergeableIngress := createMergeableCafeIngress ()
741
+ err = cnf .UpdateEndpointsMergeableIngress (mergeableIngress )
742
+ if err != nil {
743
+ t .Errorf ("UpdateEndpointsMergeableIngress returned \n %v, but expected \n %v" , err , nil )
744
+ }
745
+
746
+ // test with OSS Configurator
747
+ cnf .nginxAPI = nil
748
+ err = cnf .UpdateEndpointsMergeableIngress (mergeableIngress )
749
+ if err != nil {
750
+ t .Errorf ("UpdateEndpointsMergeableIngress returned \n %v, but expected \n %v" , err , nil )
751
+ }
752
+ }
753
+
754
+ func TestUpdateEndpointsFailsWithInvalidTemplate (t * testing.T ) {
755
+ cnf , err := createTestConfiguratorInvalidIngressTemplate ()
756
+ if err != nil {
757
+ t .Errorf ("Failed to create a test configurator: %v" , err )
758
+ }
759
+
760
+ ingress := createCafeIngressEx ()
761
+ err = cnf .UpdateEndpoints (& ingress )
762
+ if err == nil {
763
+ t .Errorf ("UpdateEndpoints returned\n %v, but expected \n %v" , nil , "template execution error" )
764
+ }
765
+ }
766
+
767
+ func TestUpdateEndpointsMergeableIngressFailsWithInvalidTemplate (t * testing.T ) {
768
+ cnf , err := createTestConfiguratorInvalidIngressTemplate ()
769
+ if err != nil {
770
+ t .Errorf ("Failed to create a test configurator: %v" , err )
771
+ }
772
+
773
+ mergeableIngress := createMergeableCafeIngress ()
774
+ err = cnf .UpdateEndpointsMergeableIngress (mergeableIngress )
775
+ if err == nil {
776
+ t .Errorf ("UpdateEndpointsMergeableIngress returned \n %v, but expected \n %v" , nil , "template execution error" )
777
+ }
778
+ }
0 commit comments