github.com/argoproj/argo-cd/v3@v3.2.1/util/swagger/swagger_test.go (about) 1 package swagger 2 3 import ( 4 "encoding/json" 5 "net" 6 "net/http" 7 "testing" 8 9 "github.com/go-openapi/loads" 10 "github.com/stretchr/testify/require" 11 12 "github.com/argoproj/argo-cd/v3/util/assets" 13 ) 14 15 func TestSwaggerUI(t *testing.T) { 16 serve := func(c chan<- string) { 17 // listen on first available dynamic (unprivileged) port 18 listener, err := net.Listen("tcp", ":0") 19 if err != nil { 20 panic(err) 21 } 22 23 // send back the address so that it can be used 24 c <- listener.Addr().String() 25 26 mux := http.NewServeMux() 27 ServeSwaggerUI(mux, assets.SwaggerJSON, "/swagger-ui", "") 28 panic(http.Serve(listener, mux)) 29 } 30 31 c := make(chan string, 1) 32 33 // run a local webserver to test data retrieval 34 go serve(c) 35 36 address := <-c 37 t.Logf("Listening at address: %s", address) 38 39 server := "http://" + address 40 41 specDoc, err := loads.Spec(server + "/swagger.json") 42 require.NoError(t, err) 43 44 _, err = json.MarshalIndent(specDoc.Spec(), "", " ") 45 require.NoError(t, err) 46 47 resp, err := http.Get(server + "/swagger-ui") 48 require.NoError(t, err) 49 require.Equalf(t, http.StatusOK, resp.StatusCode, "Was expecting status code 200 from swagger-ui, but got %d instead", resp.StatusCode) 50 }