@@ -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