@@ -27,7 +27,9 @@ import (
2727
2828 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2929 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3031 "k8s.io/apimachinery/pkg/runtime"
32+ runtimeschema "k8s.io/apimachinery/pkg/runtime/schema"
3133 "k8s.io/apimachinery/pkg/util/sets"
3234 "k8s.io/apimachinery/pkg/util/wait"
3335 "k8s.io/client-go/rest"
@@ -94,6 +96,7 @@ var _ = Describe("VirtualWorkspace Provider", Ordered, func() {
9496 Raw : []byte (`{"type":"object","properties":{"spec":{"type":"object","properties":{"message":{"type":"string"}}}}}` ),
9597 },
9698 Storage : true ,
99+ Served : true ,
97100 }},
98101 },
99102 }
@@ -149,11 +152,35 @@ var _ = Describe("VirtualWorkspace Provider", Ordered, func() {
149152 envtest .Eventually (GinkgoT (), func () (bool , string ) {
150153 err := cli .Cluster (provider ).Get (ctx , client.ObjectKey {Name : "example.com" }, endpoints )
151154 if err != nil {
152- return false , fmt .Sprintf ("failed to get APIExportEndpointSlice in %s : %v" , provider , err )
155+ return false , fmt .Sprintf ("failed to get APIExportEndpointSlice in %q : %v" , provider , err )
153156 }
154157 return len (endpoints .Status .APIExportEndpoints ) > 0 , toYAML (GinkgoT (), endpoints )
155- }, wait .ForeverTestTimeout , time .Millisecond * 100 , "failed to see endpoints in APIExportEndpointSlice in %s " , provider )
158+ }, wait .ForeverTestTimeout , time .Millisecond * 100 , "failed to see endpoints in APIExportEndpointSlice in %q " , provider )
156159 vwEndpoint = endpoints .Status .APIExportEndpoints [0 ].URL
160+
161+ By (fmt .Sprintf ("waiting until the APIBinding in the consumer workspace %q to be ready" , consumer ))
162+ envtest .Eventually (GinkgoT (), func () (bool , string ) {
163+ current := & apisv1alpha1.APIBinding {}
164+ err := cli .Cluster (consumer ).Get (ctx , client.ObjectKey {Name : "example.com" }, current )
165+ if err != nil {
166+ return false , fmt .Sprintf ("failed to get APIBinding in %q: %v" , consumer , err )
167+ }
168+ if current .Status .Phase != apisv1alpha1 .APIBindingPhaseBound {
169+ return false , fmt .Sprintf ("binding not bound:\n \n %s" , toYAML (GinkgoT (), current ))
170+ }
171+ return true , ""
172+ }, wait .ForeverTestTimeout , time .Millisecond * 100 , "failed to wait for APIBinding in consumer workspace to be ready %q" , consumer )
173+
174+ By ("waiting until things can be listed in the consumer workspace" )
175+ envtest .Eventually (GinkgoT (), func () (bool , string ) {
176+ u := & unstructured.UnstructuredList {}
177+ u .SetGroupVersionKind (runtimeschema.GroupVersionKind {Group : "example.com" , Version : "v1" , Kind : "ThingList" })
178+ err = cli .Cluster (consumer ).List (ctx , u )
179+ if err != nil {
180+ return false , fmt .Sprintf ("failed to list things in %s: %v" , consumer , err )
181+ }
182+ return true , ""
183+ }, wait .ForeverTestTimeout , time .Millisecond * 100 , "failed to wait for things to be listable in consumer workspace %q" , consumer )
157184 })
158185
159186 Describe ("with a multicluster provider and manager" , func () {
0 commit comments