...

Source file src/github.com/datawire/ambassador/v2/cmd/entrypoint/parse_service_test.go

Documentation: github.com/datawire/ambassador/v2/cmd/entrypoint

     1  package entrypoint
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/datawire/ambassador/v2/pkg/kates"
    10  	"github.com/datawire/dlib/dlog"
    11  )
    12  
    13  var serviceTests = []struct {
    14  	Module            moduleResolver
    15  	Service           string
    16  	Namespace         string
    17  	ExpectedService   string
    18  	ExpectedNamespace string
    19  	ExpectedPort      string
    20  }{
    21  	{
    22  		moduleResolver{},
    23  		"service-name.namespace:3000",
    24  		"other-namespace",
    25  		"service-name",
    26  		"namespace",
    27  		"3000",
    28  	},
    29  	{
    30  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
    31  		"service-name.namespace:3000",
    32  		"other-namespace",
    33  		"service-name",
    34  		"namespace",
    35  		"3000",
    36  	},
    37  	{
    38  		moduleResolver{},
    39  		"service-name.namespace",
    40  		"other-namespace",
    41  		"service-name",
    42  		"namespace",
    43  		"",
    44  	},
    45  	{
    46  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
    47  		"service-name.namespace",
    48  		"other-namespace",
    49  		"service-name",
    50  		"namespace",
    51  		"",
    52  	},
    53  	{
    54  		moduleResolver{},
    55  		"service-name.namespace.svc.cluster.local:3000",
    56  		"other-namespace",
    57  		"service-name",
    58  		"namespace",
    59  		"3000",
    60  	},
    61  	{
    62  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
    63  		"service-name.namespace.svc.cluster.local:3000",
    64  		"other-namespace",
    65  		"service-name",
    66  		"namespace",
    67  		"3000",
    68  	},
    69  	{
    70  		moduleResolver{},
    71  		"service-name.namespace.svc.cluster.local",
    72  		"other-namespace",
    73  		"service-name",
    74  		"namespace",
    75  		"",
    76  	},
    77  	{
    78  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
    79  		"service-name.namespace.svc.cluster.local",
    80  		"other-namespace",
    81  		"service-name",
    82  		"namespace",
    83  		"",
    84  	},
    85  	{
    86  		moduleResolver{},
    87  		"service-name:3000",
    88  		"other-namespace",
    89  		"service-name",
    90  		"other-namespace",
    91  		"3000",
    92  	},
    93  	{
    94  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
    95  		"service-name:3000",
    96  		"other-namespace",
    97  		"service-name",
    98  		"default",
    99  		"3000",
   100  	},
   101  	{
   102  		moduleResolver{},
   103  		"service-name",
   104  		"other-namespace",
   105  		"service-name",
   106  		"other-namespace",
   107  		"",
   108  	},
   109  	{
   110  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
   111  		"service-name",
   112  		"other-namespace",
   113  		"service-name",
   114  		"default",
   115  		"",
   116  	},
   117  	{
   118  		moduleResolver{},
   119  		"1.2.3.4",
   120  		"other-namespace",
   121  		"1.2.3.4",
   122  		"other-namespace",
   123  		"",
   124  	},
   125  	{
   126  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
   127  		"1.2.3.4:8080",
   128  		"other-namespace",
   129  		"1.2.3.4",
   130  		"default",
   131  		"8080",
   132  	},
   133  	{
   134  		moduleResolver{},
   135  		"1.2.3.4:blah",
   136  		"other-namespace",
   137  		"1",
   138  		"2",
   139  		"",
   140  	},
   141  	{
   142  		moduleResolver{UseAmbassadorNamespaceForServiceResolution: true},
   143  		"1.2.3.4:blah",
   144  		"other-namespace",
   145  		"1",
   146  		"2",
   147  		"",
   148  	},
   149  }
   150  
   151  func TestParseService(t *testing.T) {
   152  	ctx := dlog.NewTestContext(t, false)
   153  	cm := &kates.ConfigMap{ObjectMeta: kates.ObjectMeta{Name: "foo", Namespace: "bar"}}
   154  	for _, test := range serviceTests {
   155  		// Make sure we ignore these also.
   156  		for _, prefix := range []string{"", "http://", "https://"} {
   157  			service := fmt.Sprintf("%s%s", prefix, test.Service)
   158  			t.Run(fmt.Sprintf("%s,%s,%v", service, test.Namespace, test.Module.UseAmbassadorNamespaceForServiceResolution), func(t *testing.T) {
   159  				name, namespace, port := test.Module.parseService(ctx, cm, service, test.Namespace)
   160  				assert.Equal(t, test.ExpectedService, name)
   161  				assert.Equal(t, test.ExpectedNamespace, namespace)
   162  				assert.Equal(t, test.ExpectedPort, port)
   163  			})
   164  		}
   165  	}
   166  }
   167  

View as plain text