Skip to content

Commit

Permalink
Update controller tests to work with v1alpha2 MySQLUser
Browse files Browse the repository at this point in the history
  • Loading branch information
babbageclunk committed Jan 21, 2021
1 parent 5ae336a commit 737c295
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 27 deletions.
38 changes: 25 additions & 13 deletions controllers/mysql_combined_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package controllers

import (
"context"
"reflect"
"testing"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -115,17 +116,19 @@ func RunMySQLUserHappyPath(ctx context.Context, t *testing.T, mySQLServerName st

// Create a user in the DB
username := GenerateTestResourceNameWithRandom("user", 10)
user := &azurev1alpha1.MySQLUser{
user := &v1alpha2.MySQLUser{
ObjectMeta: metav1.ObjectMeta{
Name: username,
Namespace: "default",
},
Spec: azurev1alpha1.MySQLUserSpec{
Spec: v1alpha2.MySQLUserSpec{
ResourceGroup: rgName,
Server: mySQLServerName,
DbName: mySQLDBName,
Username: username,
Roles: []string{"SELECT"},
Roles: []string{"RELOAD", "PROCESS"},
DatabaseRoles: map[string][]string{
mySQLDBName: []string{"SELECT", "DELETE"},
},
Username: username,
},
}
EnsureInstance(ctx, t, tc, user)
Expand All @@ -135,8 +138,10 @@ func RunMySQLUserHappyPath(ctx context.Context, t *testing.T, mySQLServerName st
err := tc.k8sClient.Get(ctx, namespacedName, user)
assert.NoError(err)

updatedRoles := []string{"UPDATE", "DELETE", "CREATE", "DROP"}
updatedRoles := []string{"PROCESS", "REPLICATION CLIENT"}
user.Spec.Roles = updatedRoles
updatedDbRoles := []string{"CREATE", "UPDATE", "DELETE"}
user.Spec.DatabaseRoles[mySQLDBName] = updatedDbRoles
err = tc.k8sClient.Update(ctx, user)
assert.NoError(err)

Expand All @@ -152,24 +157,31 @@ func RunMySQLUserHappyPath(ctx context.Context, t *testing.T, mySQLServerName st
ctx,
mysql.MySQLDriverName,
fullServerName,
mySQLDBName,
"mysql",
mysql.MySQLServerPort,
adminUser,
adminPassword)
assert.NoError(err)

expectedRoles := mysql.SliceToSet(updatedRoles)
expectedDbRoles := make(map[string]mysql.StringSet)
for db, roles := range user.Spec.DatabaseRoles {
expectedDbRoles[db] = mysql.SliceToSet(roles)
}

assert.Eventually(func() bool {
roles, err := mysql.ExtractUserRoles(ctx, db, username, mySQLDBName)
actualRoles, err := mysql.ExtractUserServerRoles(ctx, db, username)
assert.NoError(err)

if len(roles) != len(updatedRoles) {
if !reflect.DeepEqual(expectedRoles, actualRoles) {
return false
}

for _, role := range updatedRoles {
if _, ok := roles[role]; !ok {
return false
}
actualDbRoles, err := mysql.ExtractUserDatabaseRoles(ctx, db, username)
assert.NoError(err)

if !reflect.DeepEqual(expectedDbRoles, actualDbRoles) {
return false
}

return true
Expand Down
30 changes: 16 additions & 14 deletions controllers/mysqluser_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"context"
"testing"

azurev1alpha1 "github.com/Azure/azure-service-operator/api/v1alpha1"
"github.com/Azure/azure-service-operator/api/v1alpha2"
"github.com/Azure/azure-service-operator/pkg/errhelp"
"github.com/Azure/azure-service-operator/pkg/helpers"
"github.com/stretchr/testify/assert"
Expand All @@ -24,25 +24,26 @@ func TestMySQLUserControllerNoAdminSecret(t *testing.T) {

var mysqlServerName string
var mysqlDatabaseName string
var mysqlUser *azurev1alpha1.MySQLUser
var mysqlUser *v1alpha2.MySQLUser

mysqlServerName = GenerateTestResourceNameWithRandom("mysqlserver-test", 10)
mysqlDatabaseName = GenerateTestResourceNameWithRandom("mysqldb-test", 10)
resourceGroup := GenerateTestResourceNameWithRandom("myrg", 10)
mysqlusername := "mysql-test-user" + helpers.RandomString(10)
roles := []string{"select on *.* "}

mysqlUser = &azurev1alpha1.MySQLUser{
mysqlUser = &v1alpha2.MySQLUser{
ObjectMeta: metav1.ObjectMeta{
Name: mysqlusername,
Namespace: "default",
},
Spec: azurev1alpha1.MySQLUserSpec{
Spec: v1alpha2.MySQLUserSpec{
ResourceGroup: resourceGroup,
Server: mysqlServerName,
DbName: mysqlDatabaseName,
AdminSecret: "",
Roles: roles,
DatabaseRoles: map[string][]string{
mysqlDatabaseName: roles,
},
AdminSecret: "",
},
}

Expand All @@ -59,7 +60,7 @@ func TestMySQLUserControllerNoResourceGroup(t *testing.T) {
var err error
var mysqlServerName string
var mysqlDatabaseName string
var mysqlUser *azurev1alpha1.MySQLUser
var mysqlUser *v1alpha2.MySQLUser

mysqlServerName = GenerateTestResourceNameWithRandom("psqlserver-test", 10)
mysqlDatabaseName = GenerateTestResourceNameWithRandom("psqldb-test", 10)
Expand All @@ -83,16 +84,17 @@ func TestMySQLUserControllerNoResourceGroup(t *testing.T) {
err = tc.k8sClient.Create(ctx, secret)
assert.Equal(nil, err, "create admin secret in k8s")

mysqlUser = &azurev1alpha1.MySQLUser{
mysqlUser = &v1alpha2.MySQLUser{
ObjectMeta: metav1.ObjectMeta{
Name: mysqlUsername,
Namespace: "default",
},
Spec: azurev1alpha1.MySQLUserSpec{
Server: mysqlServerName,
DbName: mysqlDatabaseName,
AdminSecret: "",
Roles: roles,
Spec: v1alpha2.MySQLUserSpec{
Server: mysqlServerName,
AdminSecret: "",
DatabaseRoles: map[string][]string{
mysqlDatabaseName: roles,
},
ResourceGroup: "fakerg" + helpers.RandomString(10),
},
}
Expand Down

0 comments on commit 737c295

Please sign in to comment.