Fix: mongoDB datastore can't list special email user(#4104)

optimize the test case use user
     change all verify timing in kubeapi

Signed-off-by: fengkang <fengkangb@digitalchina.com>
This commit is contained in:
fengkang01
2022-06-09 11:37:59 +08:00
committed by fengkang
parent a63c96fae1
commit 2ede4f7b0c
3 changed files with 18 additions and 24 deletions
+3 -10
View File
@@ -18,7 +18,6 @@ package model
import (
"fmt"
"strings"
"time"
"github.com/form3tech-oss/jwt-go"
@@ -63,7 +62,7 @@ func (u *User) ShortTableName() string {
// PrimaryKey return custom primary key
func (u *User) PrimaryKey() string {
return verifyUserValue(u.Name)
return u.Name
}
// Index return custom index
@@ -99,14 +98,14 @@ func (u *ProjectUser) ShortTableName() string {
// PrimaryKey return custom primary key
func (u *ProjectUser) PrimaryKey() string {
return fmt.Sprintf("%s-%s", u.ProjectName, verifyUserValue(u.Username))
return fmt.Sprintf("%s-%s", u.ProjectName, u.Username)
}
// Index return custom index
func (u *ProjectUser) Index() map[string]string {
index := make(map[string]string)
if u.Username != "" {
index["username"] = verifyUserValue(u.Username)
index["username"] = u.Username
}
if u.ProjectName != "" {
index["projectName"] = u.ProjectName
@@ -114,12 +113,6 @@ func (u *ProjectUser) Index() map[string]string {
return index
}
func verifyUserValue(v string) string {
s := strings.ReplaceAll(v, "@", "-")
s = strings.ReplaceAll(s, " ", "-")
return strings.ToLower(s)
}
// CustomClaims is the custom claims
type CustomClaims struct {
Username string `json:"username"`
@@ -75,6 +75,7 @@ func generateName(entity datastore.Entity) string {
// record the old ways here, it'll be migrated
// name := fmt.Sprintf("veladatabase-%s-%s", entity.TableName(), entity.PrimaryKey())
name := fmt.Sprintf("%s-%s", entity.ShortTableName(), entity.PrimaryKey())
name = verifyValue(name)
return strings.ReplaceAll(name, "_", "-")
}
@@ -84,11 +85,11 @@ func (m *kubeapi) generateConfigMap(entity datastore.Entity) *corev1.ConfigMap {
if labels == nil {
labels = make(map[string]string)
}
labels["table"] = entity.TableName()
labels["primaryKey"] = entity.PrimaryKey()
for k, v := range labels {
labels[k] = verifyValue(v)
}
labels["table"] = entity.TableName()
labels["primaryKey"] = entity.PrimaryKey()
var configMap = corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: generateName(entity),
@@ -179,11 +180,11 @@ func (m *kubeapi) Put(ctx context.Context, entity datastore.Entity) error {
if labels == nil {
labels = make(map[string]string)
}
labels["table"] = entity.TableName()
labels["primaryKey"] = entity.PrimaryKey()
for k, v := range labels {
labels[k] = verifyValue(v)
}
labels["table"] = entity.TableName()
labels["primaryKey"] = entity.PrimaryKey()
entity.SetUpdateTime(time.Now())
var configMap corev1.ConfigMap
if err := m.kubeClient.Get(ctx, types.NamespacedName{Namespace: m.namespace, Name: generateName(entity)}, &configMap); err != nil {
@@ -248,20 +248,20 @@ var _ = Describe("Test kubeapi datastore driver", func() {
})
It("Test verify index", func() {
var app = model.Application{Name: "can@delete", Description: "this is for test special symbol"}
err := kubeStore.Add(context.TODO(), &app)
var usr = model.User{Name: "can@delete", Email: "xxx@xx.com"}
err := kubeStore.Add(context.TODO(), &usr)
Expect(err).ToNot(HaveOccurred())
app.Description = "change"
err = kubeStore.Put(context.TODO(), &app)
usr.Email = "change"
err = kubeStore.Put(context.TODO(), &usr)
Expect(err).ToNot(HaveOccurred())
err = kubeStore.Get(context.TODO(), &app)
err = kubeStore.Get(context.TODO(), &usr)
Expect(err).Should(BeNil())
diff := cmp.Diff(app.Description, "change")
diff := cmp.Diff(usr.Email, "change")
Expect(diff).Should(BeEmpty())
list, err := kubeStore.List(context.TODO(), &app, &datastore.ListOptions{FilterOptions: datastore.FilterOptions{In: []datastore.InQueryOption{
list, err := kubeStore.List(context.TODO(), &usr, &datastore.ListOptions{FilterOptions: datastore.FilterOptions{In: []datastore.InQueryOption{
{
Key: "name",
Values: []string{"can@delete"},
@@ -271,7 +271,7 @@ var _ = Describe("Test kubeapi datastore driver", func() {
diff = cmp.Diff(len(list), 1)
Expect(diff).Should(BeEmpty())
count, err := kubeStore.Count(context.TODO(), &app, &datastore.FilterOptions{In: []datastore.InQueryOption{
count, err := kubeStore.Count(context.TODO(), &usr, &datastore.FilterOptions{In: []datastore.InQueryOption{
{
Key: "name",
Values: []string{"can@delete"},
@@ -280,8 +280,8 @@ var _ = Describe("Test kubeapi datastore driver", func() {
Expect(err).ShouldNot(HaveOccurred())
Expect(count).Should(Equal(int64(1)))
app.Name = "can@delete"
err = kubeStore.Delete(context.TODO(), &app)
usr.Name = "can@delete"
err = kubeStore.Delete(context.TODO(), &usr)
Expect(err).ShouldNot(HaveOccurred())
})
})