...

Source file src/github.com/aws/smithy-go/transport/http/host_test.go

Documentation: github.com/aws/smithy-go/transport/http

     1  package http
     2  
     3  import (
     4  	"strconv"
     5  	"testing"
     6  )
     7  
     8  func TestValidPortNumber(t *testing.T) {
     9  	cases := []struct {
    10  		Input string
    11  		Valid bool
    12  	}{
    13  		{Input: "123", Valid: true},
    14  		{Input: "123.0", Valid: false},
    15  		{Input: "-123", Valid: false},
    16  		{Input: "65536", Valid: false},
    17  		{Input: "0", Valid: true},
    18  	}
    19  	for i, c := range cases {
    20  		t.Run(strconv.Itoa(i), func(t *testing.T) {
    21  			valid := ValidPortNumber(c.Input)
    22  			if e, a := c.Valid, valid; e != a {
    23  				t.Errorf("expect valid %v, got %v", e, a)
    24  			}
    25  		})
    26  	}
    27  
    28  }
    29  
    30  func TestValidHostLabel(t *testing.T) {
    31  	cases := []struct {
    32  		Input string
    33  		Valid bool
    34  	}{
    35  		{Input: "abc123", Valid: true},
    36  		{Input: "123", Valid: true},
    37  		{Input: "abc", Valid: true},
    38  		{Input: "123-abc", Valid: true},
    39  		{Input: "{thing}-abc", Valid: false},
    40  		{Input: "abc.123", Valid: false},
    41  		{Input: "abc/123", Valid: false},
    42  		{Input: "012345678901234567890123456789012345678901234567890123456789123", Valid: true},
    43  		{Input: "0123456789012345678901234567890123456789012345678901234567891234", Valid: false},
    44  		{Input: "", Valid: false},
    45  	}
    46  
    47  	for i, c := range cases {
    48  		t.Run(strconv.Itoa(i), func(t *testing.T) {
    49  			valid := ValidHostLabel(c.Input)
    50  			if e, a := c.Valid, valid; e != a {
    51  				t.Errorf("expect valid %v, got %v", e, a)
    52  			}
    53  		})
    54  	}
    55  }
    56  
    57  func TestValidateEndpointHostHandler(t *testing.T) {
    58  	cases := map[string]struct {
    59  		Input string
    60  		Valid bool
    61  	}{
    62  		"valid host":  {Input: "abc.123", Valid: true},
    63  		"fqdn host":   {Input: "abc.123.", Valid: true},
    64  		"empty label": {Input: "abc..", Valid: false},
    65  		"max host len": {
    66  			Input: "123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.12345",
    67  			Valid: true,
    68  		},
    69  		"too long host": {
    70  			Input: "123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456",
    71  			Valid: false,
    72  		},
    73  		"valid host with port number":         {Input: "abd.123:1234", Valid: true},
    74  		"valid host with invalid port number": {Input: "abc.123:99999", Valid: false},
    75  		"empty host with port number":         {Input: ":1234", Valid: false},
    76  		"valid host with empty port number":   {Input: "abc.123:", Valid: false},
    77  	}
    78  
    79  	for name, c := range cases {
    80  		t.Run(name, func(t *testing.T) {
    81  			err := ValidateEndpointHost(c.Input)
    82  			if e, a := c.Valid, err == nil; e != a {
    83  				t.Errorf("expect valid %v, got %v, %v", e, a, err)
    84  			}
    85  		})
    86  	}
    87  }
    88  

View as plain text