fix unit tests and return type for getInfrastructureRoles
This commit is contained in:
		
							parent
							
								
									4bbf1e9d24
								
							
						
					
					
						commit
						d580684acb
					
				|  | @ -200,7 +200,7 @@ func (c *Controller) getInfrastructureRoles( | ||||||
| 	errors := make([]string, 0) | 	errors := make([]string, 0) | ||||||
| 	noRolesProvided := true | 	noRolesProvided := true | ||||||
| 	roles := []spec.PgUser{} | 	roles := []spec.PgUser{} | ||||||
| 	uniqRoles := map[string]spec.PgUser{} | 	uniqRoles := make(map[string]spec.PgUser) | ||||||
| 
 | 
 | ||||||
| 	// To be compatible with the legacy implementation we need to return nil if
 | 	// To be compatible with the legacy implementation we need to return nil if
 | ||||||
| 	// the provided secret name is empty. The equivalent situation in the
 | 	// the provided secret name is empty. The equivalent situation in the
 | ||||||
|  | @ -213,7 +213,7 @@ func (c *Controller) getInfrastructureRoles( | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if noRolesProvided { | 	if noRolesProvided { | ||||||
| 		return nil, nil | 		return uniqRoles, nil | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, secret := range rolesSecrets { | 	for _, secret := range rolesSecrets { | ||||||
|  | @ -242,7 +242,7 @@ func (c *Controller) getInfrastructureRoles( | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if len(errors) > 0 { | 	if len(errors) > 0 { | ||||||
| 		return nil, fmt.Errorf(strings.Join(errors, `', '`)) | 		return uniqRoles, fmt.Errorf(strings.Join(errors, `', '`)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return uniqRoles, nil | 	return uniqRoles, nil | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import ( | ||||||
| 
 | 
 | ||||||
| 	b64 "encoding/base64" | 	b64 "encoding/base64" | ||||||
| 
 | 
 | ||||||
|  | 	"github.com/stretchr/testify/assert" | ||||||
| 	"github.com/zalando/postgres-operator/pkg/spec" | 	"github.com/zalando/postgres-operator/pkg/spec" | ||||||
| 	"github.com/zalando/postgres-operator/pkg/util/config" | 	"github.com/zalando/postgres-operator/pkg/util/config" | ||||||
| 	"github.com/zalando/postgres-operator/pkg/util/k8sutil" | 	"github.com/zalando/postgres-operator/pkg/util/k8sutil" | ||||||
|  | @ -90,21 +91,21 @@ func TestClusterWorkerID(t *testing.T) { | ||||||
| // not exist, or empty) and the old format.
 | // not exist, or empty) and the old format.
 | ||||||
| func TestOldInfrastructureRoleFormat(t *testing.T) { | func TestOldInfrastructureRoleFormat(t *testing.T) { | ||||||
| 	var testTable = []struct { | 	var testTable = []struct { | ||||||
| 		secretName     spec.NamespacedName | 		secretName    spec.NamespacedName | ||||||
| 		expectedRoles  map[string]spec.PgUser | 		expectedRoles map[string]spec.PgUser | ||||||
| 		expectedErrors []error | 		expectedError error | ||||||
| 	}{ | 	}{ | ||||||
| 		{ | 		{ | ||||||
| 			// empty secret name
 | 			// empty secret name
 | ||||||
| 			spec.NamespacedName{}, | 			spec.NamespacedName{}, | ||||||
| 			nil, | 			map[string]spec.PgUser{}, | ||||||
| 			nil, | 			nil, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			// secret does not exist
 | 			// secret does not exist
 | ||||||
| 			spec.NamespacedName{Namespace: v1.NamespaceDefault, Name: "null"}, | 			spec.NamespacedName{Namespace: v1.NamespaceDefault, Name: "null"}, | ||||||
| 			map[string]spec.PgUser{}, | 			map[string]spec.PgUser{}, | ||||||
| 			[]error{fmt.Errorf(`could not get infrastructure roles secret default/null: NotFound`)}, | 			fmt.Errorf(`could not get infrastructure roles secret default/null: NotFound`), | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			spec.NamespacedName{ | 			spec.NamespacedName{ | ||||||
|  | @ -129,7 +130,7 @@ func TestOldInfrastructureRoleFormat(t *testing.T) { | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	for _, test := range testTable { | 	for _, test := range testTable { | ||||||
| 		roles, errors := utilTestController.getInfrastructureRoles( | 		roles, err := utilTestController.getInfrastructureRoles( | ||||||
| 			[]*config.InfrastructureRole{ | 			[]*config.InfrastructureRole{ | ||||||
| 				&config.InfrastructureRole{ | 				&config.InfrastructureRole{ | ||||||
| 					SecretName:  test.secretName, | 					SecretName:  test.secretName, | ||||||
|  | @ -140,22 +141,9 @@ func TestOldInfrastructureRoleFormat(t *testing.T) { | ||||||
| 				}, | 				}, | ||||||
| 			}) | 			}) | ||||||
| 
 | 
 | ||||||
| 		if len(errors) != len(test.expectedErrors) { | 		if err != nil && err.Error() != test.expectedError.Error() { | ||||||
| 			t.Errorf("expected error '%v' does not match the actual error '%v'", | 			t.Errorf("expected error '%v' does not match the actual error '%v'", | ||||||
| 				test.expectedErrors, errors) | 				test.expectedError, err) | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		for idx := range errors { |  | ||||||
| 			err := errors[idx] |  | ||||||
| 			expectedErr := test.expectedErrors[idx] |  | ||||||
| 
 |  | ||||||
| 			if err != expectedErr { |  | ||||||
| 				if err != nil && expectedErr != nil && err.Error() == expectedErr.Error() { |  | ||||||
| 					continue |  | ||||||
| 				} |  | ||||||
| 				t.Errorf("expected error '%v' does not match the actual error '%v'", |  | ||||||
| 					expectedErr, err) |  | ||||||
| 			} |  | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if !reflect.DeepEqual(roles, test.expectedRoles) { | 		if !reflect.DeepEqual(roles, test.expectedRoles) { | ||||||
|  | @ -169,9 +157,8 @@ func TestOldInfrastructureRoleFormat(t *testing.T) { | ||||||
| // corresponding secrets. Here we test the new format.
 | // corresponding secrets. Here we test the new format.
 | ||||||
| func TestNewInfrastructureRoleFormat(t *testing.T) { | func TestNewInfrastructureRoleFormat(t *testing.T) { | ||||||
| 	var testTable = []struct { | 	var testTable = []struct { | ||||||
| 		secrets        []spec.NamespacedName | 		secrets       []spec.NamespacedName | ||||||
| 		expectedRoles  map[string]spec.PgUser | 		expectedRoles map[string]spec.PgUser | ||||||
| 		expectedErrors []error |  | ||||||
| 	}{ | 	}{ | ||||||
| 		// one secret with one configmap
 | 		// one secret with one configmap
 | ||||||
| 		{ | 		{ | ||||||
|  | @ -196,7 +183,6 @@ func TestNewInfrastructureRoleFormat(t *testing.T) { | ||||||
| 					Flags:    []string{"createdb"}, | 					Flags:    []string{"createdb"}, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 			nil, |  | ||||||
| 		}, | 		}, | ||||||
| 		// multiple standalone secrets
 | 		// multiple standalone secrets
 | ||||||
| 		{ | 		{ | ||||||
|  | @ -224,7 +210,6 @@ func TestNewInfrastructureRoleFormat(t *testing.T) { | ||||||
| 					MemberOf: []string{"new-test-inrole2"}, | 					MemberOf: []string{"new-test-inrole2"}, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 			nil, |  | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	for _, test := range testTable { | 	for _, test := range testTable { | ||||||
|  | @ -239,27 +224,8 @@ func TestNewInfrastructureRoleFormat(t *testing.T) { | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		roles, errors := utilTestController.getInfrastructureRoles(definitions) | 		roles, err := utilTestController.getInfrastructureRoles(definitions) | ||||||
| 		if len(errors) != len(test.expectedErrors) { | 		assert.NoError(t, err) | ||||||
| 			t.Errorf("expected error does not match the actual error:\n%+v\n%+v", |  | ||||||
| 				test.expectedErrors, errors) |  | ||||||
| 
 |  | ||||||
| 			// Stop and do not do any further checks
 |  | ||||||
| 			return |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		for idx := range errors { |  | ||||||
| 			err := errors[idx] |  | ||||||
| 			expectedErr := test.expectedErrors[idx] |  | ||||||
| 
 |  | ||||||
| 			if err != expectedErr { |  | ||||||
| 				if err != nil && expectedErr != nil && err.Error() == expectedErr.Error() { |  | ||||||
| 					continue |  | ||||||
| 				} |  | ||||||
| 				t.Errorf("expected error '%v' does not match the actual error '%v'", |  | ||||||
| 					expectedErr, err) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		if !reflect.DeepEqual(roles, test.expectedRoles) { | 		if !reflect.DeepEqual(roles, test.expectedRoles) { | ||||||
| 			t.Errorf("expected roles output/the actual:\n%#v\n%#v", | 			t.Errorf("expected roles output/the actual:\n%#v\n%#v", | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue