7
7
"io"
8
8
"net/http"
9
9
"net/http/httptest"
10
+ "regexp"
10
11
"strings"
11
12
"testing"
12
13
"time"
@@ -42,6 +43,7 @@ type CollectorTest struct {
42
43
Collector * troubleshootv1beta2.HTTP
43
44
args args
44
45
checkTimeout bool
46
+ checkCert bool
45
47
want CollectorResult
46
48
wantErr bool
47
49
}
@@ -77,18 +79,16 @@ func TestCollectHTTP_Collect(t *testing.T) {
77
79
res .Write ([]byte ("Hello, PUT!" ))
78
80
})
79
81
mux .HandleFunc ("/error" , func (res http.ResponseWriter , req * http.Request ) {
80
- time .Sleep (1 * time .Millisecond )
82
+ time .Sleep (2000 * time .Millisecond )
81
83
fmt .Println ("Sleeping for 2 seconds on /error call" )
82
84
res .Header ().Set ("Content-Type" , "application/json; charset=utf-8" )
83
85
res .WriteHeader (http .StatusInternalServerError )
84
86
res .Write ([]byte ("{\" error\" : { \" message\" : \" context deadline exceeded\" }}" ))
85
87
})
86
88
mux .HandleFunc ("/certificate-mismatch" , func (res http.ResponseWriter , req * http.Request ) {
87
- time .Sleep (1 * time .Millisecond )
88
- fmt .Println ("Sleeping for 2 seconds on /error call" )
89
89
res .Header ().Set ("Content-Type" , "application/json; charset=utf-8" )
90
90
res .WriteHeader (http .StatusInternalServerError )
91
- res .Write ([]byte ("{\" error\" : { \" message\" : \" Request failed: proxyconnect tcp: tls: failed to verify certificate: x509: \" 10.0.0.254\" certificate is not trusted\" }}" ))
91
+ res .Write ([]byte ("{\" error\" : { \" message\" : \" Request failed: proxyconnect tcp: tls: failed to verify certificate: x509: 10.0.0.254 certificate is not trusted\" }}" ))
92
92
})
93
93
94
94
sample_get_response := & ResponseData {
@@ -129,14 +129,14 @@ func TestCollectHTTP_Collect(t *testing.T) {
129
129
130
130
sample_error_response := & ErrorResponse {
131
131
Error : HTTPError {
132
- Message : "context deadline exceeded" ,
132
+ Message : "Get \" http://127.0.0.1:57932/error \" : context deadline exceeded" ,
133
133
},
134
134
}
135
135
sample_error_bytes , _ := sample_error_response .ToJSONbytes ()
136
136
137
137
sample_certificate_untrusted := & ErrorResponse {
138
138
Error : HTTPError {
139
- Message : "Request failed: proxyconnect tcp: tls: failed to verify certificate: x509: \" 10.0.0.254\" certificate is not trusted" ,
139
+ Message : "Request failed: proxyconnect tcp: tls: failed to verify certificate: x509: 10.0.0.254 certificate is not trusted" ,
140
140
},
141
141
}
142
142
sample_certificate_untrusted_bytes , _ := sample_certificate_untrusted .ToJSONbytes ()
@@ -279,8 +279,8 @@ func TestCollectHTTP_Collect(t *testing.T) {
279
279
want : CollectorResult {
280
280
"result.json" : sample_certificate_untrusted_bytes ,
281
281
},
282
- checkTimeout : true ,
283
- wantErr : true ,
282
+ checkCert : true ,
283
+ wantErr : true ,
284
284
},
285
285
}
286
286
for _ , tt := range tests {
@@ -304,8 +304,9 @@ func TestCollectHTTP_Collect(t *testing.T) {
304
304
c .Collector .Get .URL = fmt .Sprintf ("%s%s" , url , "/error" )
305
305
response_data := sample_error_response
306
306
response_data .testCollectHTTP (t , & tt , c )
307
+ } else if tt .checkCert {
307
308
c .Collector .Get .URL = fmt .Sprintf ("%s%s" , url , "/certificate-mismatch" )
308
- response_data = sample_certificate_untrusted
309
+ response_data : = sample_certificate_untrusted
309
310
response_data .testCollectHTTP (t , & tt , c )
310
311
} else {
311
312
c .Collector .Get .URL = fmt .Sprintf ("%s%s" , url , "/get" )
@@ -374,9 +375,8 @@ func (er *ErrorResponse) testCollectHTTP(t *testing.T, tt *CollectorTest, c *Col
374
375
t .Errorf ("CollectHTTP.Collect() error = %v, wantErr %v" , err , tt .wantErr )
375
376
return
376
377
}
377
-
378
- if strings .Contains (strings .TrimSpace (er .Error .Message ), "context deadline exceeded" ) != tt .wantErr {
379
- t .Errorf ("CollectHTTP.Collect() response = %v, wantErr %v" , er .Error .Message , tt .wantErr )
378
+ if ! compareStringsAlphaOnly (string (tt .want [expected_filename ]), string (er .Error .Message )) {
379
+ t .Errorf ("CollectHTTP.Collect() response = %v, wantErr %s" , er .Error .Message , tt .want [expected_filename ])
380
380
}
381
381
}
382
382
@@ -473,3 +473,12 @@ func Test_responseToOutput(t *testing.T) {
473
473
})
474
474
}
475
475
}
476
+
477
+ func compareStringsAlphaOnly (str1 , str2 string ) bool {
478
+ reg := regexp .MustCompile ("[^a-zA-Z]+" )
479
+
480
+ processedStr1 := reg .ReplaceAllString (str1 , "" )
481
+ processedStr2 := reg .ReplaceAllString (str2 , "" )
482
+
483
+ return strings .Contains (processedStr1 , processedStr2 )
484
+ }
0 commit comments