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  }