add unit test for InitAdditionalOwnerRoles
This commit is contained in:
		
							parent
							
								
									585fd07c43
								
							
						
					
					
						commit
						1d86f1dc4d
					
				|  | @ -33,10 +33,11 @@ var cl = New( | ||||||
| 	Config{ | 	Config{ | ||||||
| 		OpConfig: config.Config{ | 		OpConfig: config.Config{ | ||||||
| 			PodManagementPolicy: "ordered_ready", | 			PodManagementPolicy: "ordered_ready", | ||||||
| 			ProtectedRoles:      []string{"admin"}, | 			ProtectedRoles:      []string{"admin", "cron_admin", "part_man"}, | ||||||
| 			Auth: config.Auth{ | 			Auth: config.Auth{ | ||||||
| 				SuperUsername:       superUserName, | 				SuperUsername:        superUserName, | ||||||
| 				ReplicationUsername: replicationUserName, | 				ReplicationUsername:  replicationUserName, | ||||||
|  | 				AdditionalOwnerRoles: []string{"cron_admin", "part_man"}, | ||||||
| 			}, | 			}, | ||||||
| 			Resources: config.Resources{ | 			Resources: config.Resources{ | ||||||
| 				DownscalerAnnotations: []string{"downscaler/*"}, | 				DownscalerAnnotations: []string{"downscaler/*"}, | ||||||
|  | @ -44,7 +45,13 @@ var cl = New( | ||||||
| 		}, | 		}, | ||||||
| 	}, | 	}, | ||||||
| 	k8sutil.NewMockKubernetesClient(), | 	k8sutil.NewMockKubernetesClient(), | ||||||
| 	acidv1.Postgresql{ObjectMeta: metav1.ObjectMeta{Name: "acid-test", Namespace: "test", Annotations: map[string]string{"downscaler/downtime_replicas": "0"}}}, | 	acidv1.Postgresql{ | ||||||
|  | 		ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 			Name:        "acid-test", | ||||||
|  | 			Namespace:   "test", | ||||||
|  | 			Annotations: map[string]string{"downscaler/downtime_replicas": "0"}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
| 	logger, | 	logger, | ||||||
| 	eventRecorder, | 	eventRecorder, | ||||||
| ) | ) | ||||||
|  | @ -132,6 +139,39 @@ func TestInitRobotUsers(t *testing.T) { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func TestInitAdditionalOwnerRoles(t *testing.T) { | ||||||
|  | 	testName := "TestInitAdditionalOwnerRoles" | ||||||
|  | 
 | ||||||
|  | 	manifestUsers := map[string]acidv1.UserFlags{"foo_owner": {}, "bar_owner": {}, "app_user": {}} | ||||||
|  | 	expectedUsers := map[string]spec.PgUser{ | ||||||
|  | 		"foo_owner":  {Origin: spec.RoleOriginManifest, Name: "foo_owner", Namespace: cl.Namespace, Password: "f123", Flags: []string{"LOGIN"}, IsDbOwner: true}, | ||||||
|  | 		"bar_owner":  {Origin: spec.RoleOriginManifest, Name: "bar_owner", Namespace: cl.Namespace, Password: "b123", Flags: []string{"LOGIN"}, IsDbOwner: true}, | ||||||
|  | 		"app_user":   {Origin: spec.RoleOriginManifest, Name: "app_user", Namespace: cl.Namespace, Password: "a123", Flags: []string{"LOGIN"}, IsDbOwner: false}, | ||||||
|  | 		"cron_admin": {Origin: spec.RoleOriginSpilo, Name: "cron_admin", Namespace: cl.Namespace, MemberOf: []string{"foo_owner", "bar_owner"}}, | ||||||
|  | 		"part_man":   {Origin: spec.RoleOriginSpilo, Name: "part_man", Namespace: cl.Namespace, MemberOf: []string{"foo_owner", "bar_owner"}}, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	cl.Spec.Databases = map[string]string{"foo_db": "foo_owner", "bar_db": "bar_owner"} | ||||||
|  | 	cl.Spec.Users = manifestUsers | ||||||
|  | 
 | ||||||
|  | 	// this should set IsDbOwner field for manifest users
 | ||||||
|  | 	if err := cl.initRobotUsers(); err != nil { | ||||||
|  | 		t.Errorf("%s could not init manifest users", testName) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// update passwords to compare with result
 | ||||||
|  | 	for manifestUser := range manifestUsers { | ||||||
|  | 		pgUser := cl.pgUsers[manifestUser] | ||||||
|  | 		pgUser.Password = manifestUser[0:1] + "123" | ||||||
|  | 		cl.pgUsers[manifestUser] = pgUser | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	cl.initAdditionalOwnerRoles() | ||||||
|  | 	if !reflect.DeepEqual(cl.pgUsers, expectedUsers) { | ||||||
|  | 		t.Errorf("%s expected: %#v, got %#v", testName, expectedUsers, cl.pgUsers) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| type mockOAuthTokenGetter struct { | type mockOAuthTokenGetter struct { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue