@@ -25,9 +25,33 @@ describe('ingress-definition', function () {
25
25
'targetServiceNameSpace' : 'domain1-ns' , 'targetService' : 'domain1-cluster-cluster-1' , 'targetPort' : '8109' ,
26
26
'path' : '/myapp' , 'ssl' : false } ;
27
27
28
- const genericIngress = { 'name' : 'Route1' , 'virtualHost' : 'domain1.org' ,
29
- 'targetServiceNameSpace' : 'domain1-ns' , 'targetService' : 'domain1-cluster-cluster-1' , 'targetPort' : '8109' ,
30
- 'path' : '/myapp' , 'ssl' : true , 'tlsSecretName' : 'mytls' } ;
28
+ const traefikIngress = {
29
+ 'name' : 'console' ,
30
+ 'targetServiceNameSpace' : 'sample-domain1-ns' ,
31
+ 'targetService' : 'sample-domain1-admin-server' ,
32
+ 'targetPort' : 7002 ,
33
+ 'path' : '/console' ,
34
+ 'annotations' : {
35
+ 'kubernetes.io/ingress.class' : 'traefik' ,
36
+ 'traefik.ingress.kubernetes.io/router.tls' : 'true'
37
+ } ,
38
+ 'tlsOption' : 'ssl_terminate_ingress' ,
39
+ 'isConsoleService' : true
40
+ } ;
41
+
42
+
43
+ const nginxIngress = {
44
+ 'name' : 'console' ,
45
+ 'targetServiceNameSpace' : 'sample-domain1-ns' ,
46
+ 'targetService' : 'sample-domain1-admin-server' ,
47
+ 'targetPort' : 7001 ,
48
+ 'path' : '/console' ,
49
+ 'annotations' : {
50
+ 'kubernetes.io/ingress.class' : 'nginx'
51
+ } ,
52
+ 'tlsOption' : 'ssl_terminate_ingress' ,
53
+ 'isConsoleService' : true
54
+ } ;
31
55
32
56
before ( function ( done ) {
33
57
testHelper . install ( ) ;
@@ -56,15 +80,55 @@ describe('ingress-definition', function () {
56
80
} ) ;
57
81
58
82
it ( 'generate nginx ingress' , function ( ) {
59
- const yaml = ingressResource . createNginxRoutesAsYaml ( genericIngress ) ;
83
+ const yaml = ingressResource . createNginxRoutesAsYaml ( nginxIngress ) ;
60
84
const json = jsyaml . load ( yaml ) ;
85
+ const expectedAnnotation = 'more_clear_input_headers "WL-Proxy-Client-IP" "WL-Proxy-SSL";\n' +
86
+ 'more_set_input_headers "X-Forwarded-Proto: https";\n' +
87
+ 'more_set_input_headers "WL-Proxy-SSL: true";\n' ;
88
+
89
+ expect ( json . metadata . annotations [ 'nginx.ingress.kubernetes.io/configuration-snippet' ] ) . to . equal ( expectedAnnotation ) ;
61
90
expect ( json [ 'apiVersion' ] ) . to . equal ( 'networking.k8s.io/v1' ) ;
62
91
} ) ;
63
92
64
93
it ( 'generate traefik ingress' , function ( ) {
65
- const yaml = ingressResource . createTraefikRoutesAsYaml ( genericIngress ) ;
66
- const json = jsyaml . load ( yaml ) ;
67
- expect ( json [ 'apiVersion' ] ) . to . equal ( 'traefik.containo.us/v1alpha1' ) ;
94
+ const yaml = ingressResource . createTraefikRoutesAsYaml ( traefikIngress ) ;
95
+ const expectedYaml = 'apiVersion: traefik.containo.us/v1alpha1\n' +
96
+ 'kind: Middleware\n' +
97
+ 'metadata:\n' +
98
+ ' name: console-middleware\n' +
99
+ ' namespace: sample-domain1-ns\n' +
100
+ ' labels:\n' +
101
+ ' createdByWtkUIVersion: 1.1.0\n' +
102
+ 'spec:\n' +
103
+ ' headers:\n' +
104
+ ' sslRedirect: true\n' +
105
+ ' customRequestHeaders:\n' +
106
+ ' X-Custom-Request-Header: \'\'\n' +
107
+ ' X-Forwarded-For: \'\'\n' +
108
+ ' WL-Proxy-Client-IP: \'\'\n' +
109
+ ' WL-Proxy-SSL: \'true\'\n' +
110
+ '\n' +
111
+ '---\n' +
112
+ 'apiVersion: traefik.containo.us/v1alpha1\n' +
113
+ 'kind: IngressRoute\n' +
114
+ 'metadata:\n' +
115
+ ' name: console\n' +
116
+ ' namespace: sample-domain1-ns\n' +
117
+ ' annotations:\n' +
118
+ ' kubernetes.io/ingress.class: traefik\n' +
119
+ ' traefik.ingress.kubernetes.io/router.tls: \'true\'\n' +
120
+ 'spec:\n' +
121
+ ' routes:\n' +
122
+ ' - kind: Rule\n' +
123
+ ' match: PathPrefix(`/console`)\n' +
124
+ ' services:\n' +
125
+ ' - kind: Service\n' +
126
+ ' name: sample-domain1-admin-server\n' +
127
+ ' port: 7002\n' +
128
+ ' middlewares:\n' +
129
+ ' - name: console-middleware\n' ;
130
+
131
+ expect ( yaml ) . to . equal ( expectedYaml ) ;
68
132
} ) ;
69
133
} ) ;
70
134
} ) ;
0 commit comments