func New()

in testutils/fakekubeapi/fakekubeapi.go [100:134]


func New(namespaces corev1.NamespaceList, secrets map[string][]corev1.Secret, port int, kmsClient *kmspluginclient.Client, timeout time.Duration) (*Server, error) {
	var err error
	if port == 0 {
		port, err = freeport.GetFreePort()
		if err != nil {
			return nil, fmt.Errorf("failed to allocate port for fake kube-apiserver, error: %v", err)
		}
	}

	s := &Server{
		namespaces: namespaces,
		secrets:    secrets,
		kms:        kmsClient,
		timeout:    timeout,
	}

	s.srv = httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		switch r.Method {
		case http.MethodGet:
			s.processGet(r.URL.EscapedPath(), w)
		case http.MethodPut:
			s.processPut(r, w)
		default:
			http.Error(w, fmt.Sprintf("unexpected http method %v", r.Method), http.StatusBadRequest)
		}
	}))

	l, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", port))
	if err != nil {
		return nil, fmt.Errorf("failed to listen on port %d, error: %v", port, err)
	}
	s.srv.Listener = l
	s.srv.Start()
	return s, nil
}