@@ -28,6 +28,7 @@ import (
28
28
"net/http/httputil"
29
29
"net/url"
30
30
"reflect"
31
+ "regexp"
31
32
"strconv"
32
33
"strings"
33
34
"testing"
@@ -1832,6 +1833,33 @@ func TestTrimURLPath(t *testing.T) {
1832
1833
}
1833
1834
}
1834
1835
1836
+ func TestComponentStatusz (t * testing.T ) {
1837
+ featuregatetesting .SetFeatureGateDuringTest (t , utilfeature .DefaultFeatureGate , zpagesfeatures .ComponentStatusz , true )
1838
+ fw := newServerTest ()
1839
+ defer fw .testHTTPServer .Close ()
1840
+
1841
+ req , err := http .NewRequest (http .MethodGet , fw .testHTTPServer .URL + "/statusz" , nil )
1842
+ require .NoError (t , err )
1843
+ req .Header .Set ("Accept" , "text/plain" )
1844
+ resp , err := http .DefaultClient .Do (req )
1845
+ assert .NoError (t , err )
1846
+ defer resp .Body .Close ()
1847
+
1848
+ respByte , err := io .ReadAll (resp .Body )
1849
+ assert .NoError (t , err )
1850
+ assert .Equal (t , http .StatusOK , resp .StatusCode )
1851
+ respStr := string (respByte )
1852
+ statuszPathOutput := regexp .MustCompile ("Paths.*\n " ).FindString (respStr )
1853
+ assert .NotEqual (t , "" , statuszPathOutput , "/statusz response should contain 'Paths' line" )
1854
+ listedPaths := regexp .MustCompile ("/\\ S+" ).FindAllString (statuszPathOutput , - 1 )
1855
+ assert .NotEmpty (t , listedPaths , "/statusz response should contain listed paths when ComponentStatusz feature gate enabled" )
1856
+ for _ , path := range listedPaths {
1857
+ resp , err := http .Get (fw .testHTTPServer .URL + path )
1858
+ assert .NoError (t , err )
1859
+ assert .Equal (t , http .StatusOK , resp .StatusCode , "/statusz provided listed paths should return 200 status code" )
1860
+ }
1861
+ }
1862
+
1835
1863
func TestFineGrainedAuthz (t * testing.T ) {
1836
1864
// Enable features.ContainerCheckpoint during test
1837
1865
featuregatetesting .SetFeatureGateDuringTest (t , utilfeature .DefaultFeatureGate , features .KubeletFineGrainedAuthz , true )
0 commit comments