Merge pull request #91 from mattmoyer/prefactor-api-resource-test

Refactor GetAPIResourceList test a bit to prep for IDP CRD changes.
This commit is contained in:
Matt Moyer 2020-09-09 10:46:13 -05:00 committed by GitHub
commit 7207041c37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 49 additions and 65 deletions

View File

@ -22,81 +22,65 @@ func TestGetAPIResourceList(t *testing.T) {
groups, resources, err := client.Discovery().ServerGroupsAndResources() groups, resources, err := client.Discovery().ServerGroupsAndResources()
require.NoError(t, err) require.NoError(t, err)
groupName := "pinniped.dev" t.Run("has group", func(t *testing.T) {
actualGroup := findGroup(groupName, groups) require.Contains(t, groups, &metav1.APIGroup{
require.NotNil(t, actualGroup) Name: "pinniped.dev",
Versions: []metav1.GroupVersionForDiscovery{
expectedGroup := &metav1.APIGroup{ {
Name: "pinniped.dev", GroupVersion: "pinniped.dev/v1alpha1",
Versions: []metav1.GroupVersionForDiscovery{ Version: "v1alpha1",
{ },
},
PreferredVersion: metav1.GroupVersionForDiscovery{
GroupVersion: "pinniped.dev/v1alpha1", GroupVersion: "pinniped.dev/v1alpha1",
Version: "v1alpha1", Version: "v1alpha1",
}, },
}, })
PreferredVersion: metav1.GroupVersionForDiscovery{ })
GroupVersion: "pinniped.dev/v1alpha1",
Version: "v1alpha1",
},
}
require.Equal(t, expectedGroup, actualGroup)
actualPinnipedResources := findResources("pinniped.dev/v1alpha1", resources) t.Run("has non-CRD APIs", func(t *testing.T) {
require.NotNil(t, actualPinnipedResources) expectResources(t, "pinniped.dev/v1alpha1", resources, []metav1.APIResource{
actualCrdPinnipedResources := findResources("crd.pinniped.dev/v1alpha1", resources) {
require.NotNil(t, actualPinnipedResources) Name: "credentialrequests",
Kind: "CredentialRequest",
Verbs: []string{"create"},
Namespaced: false,
expectedCredentialRequestAPIResource := metav1.APIResource{ // This is currently an empty string in the response; maybe it should not be
Name: "credentialrequests", // empty? Seems like no harm in keeping it like this for now, but feel free
Kind: "CredentialRequest", // to update in the future if there is a compelling reason to do so.
Verbs: metav1.Verbs([]string{ SingularName: "",
"create", },
}), })
Namespaced: false, })
// This is currently an empty string in the response; maybe it should not be t.Run("has CRD APIs", func(t *testing.T) {
// empty? Seems like no harm in keeping it like this for now, but feel free expectResources(t, "crd.pinniped.dev/v1alpha1", resources, []metav1.APIResource{
// to update in the future if there is a compelling reason to do so. {
SingularName: "", Name: "credentialissuerconfigs",
} SingularName: "credentialissuerconfig",
Namespaced: true,
expectedCredentialIssuerConfigResource := metav1.APIResource{ Kind: "CredentialIssuerConfig",
Name: "credentialissuerconfigs", Verbs: []string{"delete", "deletecollection", "get", "list", "patch", "create", "update", "watch"},
SingularName: "credentialissuerconfig", ShortNames: []string{"cic"},
Namespaced: true, },
Kind: "CredentialIssuerConfig", })
Verbs: metav1.Verbs([]string{ })
"delete", "deletecollection", "get", "list", "patch", "create", "update", "watch",
}),
ShortNames: []string{"cic"},
StorageVersionHash: "unknown: to be filled in automatically below",
}
require.Len(t, actualPinnipedResources.APIResources, 1)
require.Equal(t, expectedCredentialRequestAPIResource, actualPinnipedResources.APIResources[0])
require.Len(t, actualCrdPinnipedResources.APIResources, 1)
actualAPIResource := actualCrdPinnipedResources.APIResources[0]
// workaround because its hard to predict the storage version hash (e.g. "t/+v41y+3e4=")
// so just don't worry about comparing that field
expectedCredentialIssuerConfigResource.StorageVersionHash = actualAPIResource.StorageVersionHash
require.Equal(t, expectedCredentialIssuerConfigResource, actualAPIResource)
} }
func findGroup(name string, groups []*metav1.APIGroup) *metav1.APIGroup { func expectResources(t *testing.T, groupVersion string, resources []*metav1.APIResourceList, expected []metav1.APIResource) {
for _, group := range groups { var actualResourceList *metav1.APIResourceList
if group.Name == name {
return group
}
}
return nil
}
func findResources(groupVersion string, resources []*metav1.APIResourceList) *metav1.APIResourceList {
for _, resource := range resources { for _, resource := range resources {
if resource.GroupVersion == groupVersion { if resource.GroupVersion == groupVersion {
return resource actualResourceList = resource.DeepCopy()
} }
} }
return nil require.NotNilf(t, actualResourceList, "could not find groupVersion %s", groupVersion)
// Because its hard to predict the storage version hash (e.g. "t/+v41y+3e4="), we just don't
// worry about comparing that field.
for i := range actualResourceList.APIResources {
actualResourceList.APIResources[i].StorageVersionHash = ""
}
require.EqualValues(t, expected, actualResourceList.APIResources, "unexpected API resources")
} }