github.com/nginxinc/kubernetes-ingress@v1.12.5/internal/configs/annotations_test.go (about) 1 package configs 2 3 import ( 4 "reflect" 5 "sort" 6 "testing" 7 ) 8 9 func TestParseRewrites(t *testing.T) { 10 serviceName := "coffee-svc" 11 serviceNamePart := "serviceName=" + serviceName 12 rewritePath := "/beans/" 13 rewritePathPart := "rewrite=" + rewritePath 14 rewriteService := serviceNamePart + " " + rewritePathPart 15 16 serviceNameActual, rewritePathActual, err := parseRewrites(rewriteService) 17 if serviceName != serviceNameActual || rewritePath != rewritePathActual || err != nil { 18 t.Errorf("parseRewrites(%s) should return %q, %q, nil; got %q, %q, %v", rewriteService, serviceName, rewritePath, serviceNameActual, rewritePathActual, err) 19 } 20 } 21 22 func TestParseRewritesWithLeadingAndTrailingWhitespace(t *testing.T) { 23 serviceName := "coffee-svc" 24 serviceNamePart := "serviceName=" + serviceName 25 rewritePath := "/beans/" 26 rewritePathPart := "rewrite=" + rewritePath 27 rewriteService := "\t\n " + serviceNamePart + " " + rewritePathPart + " \t\n" 28 29 serviceNameActual, rewritePathActual, err := parseRewrites(rewriteService) 30 if serviceName != serviceNameActual || rewritePath != rewritePathActual || err != nil { 31 t.Errorf("parseRewrites(%s) should return %q, %q, nil; got %q, %q, %v", rewriteService, serviceName, rewritePath, serviceNameActual, rewritePathActual, err) 32 } 33 } 34 35 func TestParseRewritesInvalidFormat(t *testing.T) { 36 rewriteService := "serviceNamecoffee-svc rewrite=/" 37 38 _, _, err := parseRewrites(rewriteService) 39 if err == nil { 40 t.Errorf("parseRewrites(%s) should return error, got nil", rewriteService) 41 } 42 } 43 44 func TestParseStickyService(t *testing.T) { 45 serviceName := "coffee-svc" 46 serviceNamePart := "serviceName=" + serviceName 47 stickyCookie := "srv_id expires=1h domain=.example.com path=/" 48 stickyService := serviceNamePart + " " + stickyCookie 49 50 serviceNameActual, stickyCookieActual, err := parseStickyService(stickyService) 51 if serviceName != serviceNameActual || stickyCookie != stickyCookieActual || err != nil { 52 t.Errorf("parseStickyService(%s) should return %q, %q, nil; got %q, %q, %v", stickyService, serviceName, stickyCookie, serviceNameActual, stickyCookieActual, err) 53 } 54 } 55 56 func TestParseStickyServiceInvalidFormat(t *testing.T) { 57 stickyService := "serviceNamecoffee-svc srv_id expires=1h domain=.example.com path=/" 58 59 _, _, err := parseStickyService(stickyService) 60 if err == nil { 61 t.Errorf("parseStickyService(%s) should return error, got nil", stickyService) 62 } 63 } 64 65 func TestFilterMasterAnnotations(t *testing.T) { 66 masterAnnotations := map[string]string{ 67 "nginx.org/rewrites": "serviceName=service1 rewrite=rewrite1", 68 "nginx.org/ssl-services": "service1", 69 "nginx.org/hsts": "True", 70 "nginx.org/hsts-max-age": "2700000", 71 "nginx.org/hsts-include-subdomains": "True", 72 } 73 removedAnnotations := filterMasterAnnotations(masterAnnotations) 74 75 expectedfilteredMasterAnnotations := map[string]string{ 76 "nginx.org/hsts": "True", 77 "nginx.org/hsts-max-age": "2700000", 78 "nginx.org/hsts-include-subdomains": "True", 79 } 80 expectedRemovedAnnotations := []string{ 81 "nginx.org/rewrites", 82 "nginx.org/ssl-services", 83 } 84 85 sort.Strings(removedAnnotations) 86 sort.Strings(expectedRemovedAnnotations) 87 88 if !reflect.DeepEqual(expectedfilteredMasterAnnotations, masterAnnotations) { 89 t.Errorf("filterMasterAnnotations returned %v, but expected %v", masterAnnotations, expectedfilteredMasterAnnotations) 90 } 91 if !reflect.DeepEqual(expectedRemovedAnnotations, removedAnnotations) { 92 t.Errorf("filterMasterAnnotations returned %v, but expected %v", removedAnnotations, expectedRemovedAnnotations) 93 } 94 } 95 96 func TestFilterMinionAnnotations(t *testing.T) { 97 minionAnnotations := map[string]string{ 98 "nginx.org/rewrites": "serviceName=service1 rewrite=rewrite1", 99 "nginx.org/ssl-services": "service1", 100 "nginx.org/hsts": "True", 101 "nginx.org/hsts-max-age": "2700000", 102 "nginx.org/hsts-include-subdomains": "True", 103 } 104 removedAnnotations := filterMinionAnnotations(minionAnnotations) 105 106 expectedfilteredMinionAnnotations := map[string]string{ 107 "nginx.org/rewrites": "serviceName=service1 rewrite=rewrite1", 108 "nginx.org/ssl-services": "service1", 109 } 110 expectedRemovedAnnotations := []string{ 111 "nginx.org/hsts", 112 "nginx.org/hsts-max-age", 113 "nginx.org/hsts-include-subdomains", 114 } 115 116 sort.Strings(removedAnnotations) 117 sort.Strings(expectedRemovedAnnotations) 118 119 if !reflect.DeepEqual(expectedfilteredMinionAnnotations, minionAnnotations) { 120 t.Errorf("filterMinionAnnotations returned %v, but expected %v", minionAnnotations, expectedfilteredMinionAnnotations) 121 } 122 if !reflect.DeepEqual(expectedRemovedAnnotations, removedAnnotations) { 123 t.Errorf("filterMinionAnnotations returned %v, but expected %v", removedAnnotations, expectedRemovedAnnotations) 124 } 125 } 126 127 func TestMergeMasterAnnotationsIntoMinion(t *testing.T) { 128 masterAnnotations := map[string]string{ 129 "nginx.org/proxy-buffering": "True", 130 "nginx.org/proxy-buffers": "2", 131 "nginx.org/proxy-buffer-size": "8k", 132 "nginx.org/hsts": "True", 133 "nginx.org/hsts-max-age": "2700000", 134 "nginx.org/proxy-connect-timeout": "50s", 135 "nginx.com/jwt-token": "$cookie_auth_token", 136 } 137 minionAnnotations := map[string]string{ 138 "nginx.org/client-max-body-size": "2m", 139 "nginx.org/proxy-connect-timeout": "20s", 140 } 141 mergeMasterAnnotationsIntoMinion(minionAnnotations, masterAnnotations) 142 143 expectedMergedAnnotations := map[string]string{ 144 "nginx.org/proxy-buffering": "True", 145 "nginx.org/proxy-buffers": "2", 146 "nginx.org/proxy-buffer-size": "8k", 147 "nginx.org/client-max-body-size": "2m", 148 "nginx.org/proxy-connect-timeout": "20s", 149 } 150 if !reflect.DeepEqual(expectedMergedAnnotations, minionAnnotations) { 151 t.Errorf("mergeMasterAnnotationsIntoMinion returned %v, but expected %v", minionAnnotations, expectedMergedAnnotations) 152 } 153 }