Fixed integration tests for load balancer capabilities
This commit is contained in:
parent
67da840097
commit
10b769c676
@ -59,8 +59,10 @@ func TestImpersonationProxy(t *testing.T) {
|
|||||||
impersonationProxyClient, err := kubernetes.NewForConfig(kubeconfig)
|
impersonationProxyClient, err := kubernetes.NewForConfig(kubeconfig)
|
||||||
require.NoError(t, err, "unexpected failure from kubernetes.NewForConfig()")
|
require.NoError(t, err, "unexpected failure from kubernetes.NewForConfig()")
|
||||||
|
|
||||||
// TODO if there is already a ConfigMap, remember its contents and delete it, which puts the proxy into its default settings
|
oldConfigMap, err := adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Get(ctx, "pinniped-concierge-impersonation-proxy-config", metav1.GetOptions{})
|
||||||
// TODO and in a t.Cleanup() if there was already a ConfigMap at the start of the test, then restore the original contents
|
if oldConfigMap.Data != nil {
|
||||||
|
adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Delete(ctx, "pinniped-concierge-impersonation-proxy-config", metav1.DeleteOptions{})
|
||||||
|
}
|
||||||
|
|
||||||
serviceUnavailableError := fmt.Sprintf(`Get "%s/api/v1/namespaces": Service Unavailable`, proxyServiceURL)
|
serviceUnavailableError := fmt.Sprintf(`Get "%s/api/v1/namespaces": Service Unavailable`, proxyServiceURL)
|
||||||
if env.HasCapability(library.HasExternalLoadBalancerProvider) {
|
if env.HasCapability(library.HasExternalLoadBalancerProvider) {
|
||||||
@ -88,7 +90,18 @@ func TestImpersonationProxy(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
t.Cleanup(func() {
|
t.Cleanup(func() {
|
||||||
// TODO clean up the ConfigMap at the end of the test, and make sure that it happens before the t.Cleanup() above which is trying to restore the original ConfigMap
|
ctx, cancel = context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
err = adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Delete(ctx, "pinniped-concierge-impersonation-proxy-config", metav1.DeleteOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
if len(oldConfigMap.Data) != 0 {
|
||||||
|
t.Log(oldConfigMap)
|
||||||
|
oldConfigMap.UID = "" // cant have a UID yet
|
||||||
|
oldConfigMap.ResourceVersion = ""
|
||||||
|
_, err = adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Create(ctx, oldConfigMap, metav1.CreateOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,23 +119,31 @@ func TestImpersonationProxy(t *testing.T) {
|
|||||||
|
|
||||||
// Update configuration to force the proxy to disabled mode
|
// Update configuration to force the proxy to disabled mode
|
||||||
configMap := configMapForConfig(t, impersonator.Config{Mode: impersonator.ModeDisabled})
|
configMap := configMapForConfig(t, impersonator.Config{Mode: impersonator.ModeDisabled})
|
||||||
_, err = adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Update(ctx, &configMap, metav1.UpdateOptions{})
|
if env.HasCapability(library.HasExternalLoadBalancerProvider) {
|
||||||
require.NoError(t, err)
|
_, err = adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Create(ctx, &configMap, metav1.CreateOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
} else {
|
||||||
|
_, err = adminClient.CoreV1().ConfigMaps(env.ConciergeNamespace).Update(ctx, &configMap, metav1.UpdateOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
// Check that we can't use the impersonation proxy to execute kubectl commands again
|
// Check that we can't use the impersonation proxy to execute kubectl commands again
|
||||||
_, err = impersonationProxyClient.CoreV1().Namespaces().List(ctx, metav1.ListOptions{})
|
_, err = impersonationProxyClient.CoreV1().Namespaces().List(ctx, metav1.ListOptions{})
|
||||||
require.EqualError(t, err, serviceUnavailableError)
|
require.EqualError(t, err, serviceUnavailableError)
|
||||||
|
|
||||||
// if env.HasCapability(library.HasExternalLoadBalancerProvider) {
|
if env.HasCapability(library.HasExternalLoadBalancerProvider) {
|
||||||
// TODO we started the test with a load balancer, so after forcing the proxy to disable, assert that the LoadBalancer was deleted
|
// the load balancer should not exist after we disable the impersonation proxy
|
||||||
// }
|
require.Eventually(t, func() bool {
|
||||||
|
return !hasLoadBalancerService(ctx, t, adminClient, env.ConciergeNamespace)
|
||||||
|
}, 10*time.Second, 500*time.Millisecond)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func configMapForConfig(t *testing.T, config impersonator.Config) corev1.ConfigMap {
|
func configMapForConfig(t *testing.T, config impersonator.Config) corev1.ConfigMap {
|
||||||
configString, err := yaml.Marshal(config)
|
configString, err := yaml.Marshal(config)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
configMap := corev1.ConfigMap{
|
configMap := corev1.ConfigMap{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "pinniped-concierge-impersonation-proxy-config"},
|
ObjectMeta: metav1.ObjectMeta{Name: "pinniped-concierge-impersonation-proxy-config"}, // TODO don't hard code this
|
||||||
Data: map[string]string{
|
Data: map[string]string{
|
||||||
"config.yaml": string(configString),
|
"config.yaml": string(configString),
|
||||||
}}
|
}}
|
||||||
|
Loading…
Reference in New Issue
Block a user