Skip to content

Commit c04d265

Browse files
authored
fix: don't set member if no GrowthbookUser defined, set to list default (#6)
1 parent 5413741 commit c04d265

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

internal/growthbook/organization.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ func UpdateOrganization(ctx context.Context, org Organization, db storage.Databa
4141
err := col.FindOne(ctx, filter, &existing)
4242

4343
if err != nil {
44+
if org.Members == nil {
45+
org.Members = []OrganizationMember{}
46+
}
47+
4448
org.DateCreated = time.Now()
4549
return col.InsertOne(ctx, org)
4650
}
@@ -54,7 +58,11 @@ func UpdateOrganization(ctx context.Context, org Organization, db storage.Databa
5458
existing.OwnerEmail = org.OwnerEmail
5559
existing.Name = org.Name
5660
existing.ID = org.ID
57-
existing.Members = org.Members
61+
62+
//If any GrowthbooUser is found the org membership will be managed by the controller
63+
if org.Members != nil {
64+
existing.Members = org.Members
65+
}
5866

5967
updateBson, err := bson.Marshal(existing)
6068
if err != nil {

internal/growthbook/organization_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func TestOrganizationCreateIfNotExists(t *testing.T) {
5959
err := UpdateOrganization(context.TODO(), Organization, db)
6060
g.Expect(err).To(BeNil())
6161
g.Expect(insertedDoc.ID).To(Equal(Organization.ID))
62+
g.Expect(insertedDoc.Members).To(Equal([]OrganizationMember{}))
6263
}
6364

6465
func TestOrganizationNoUpdate(t *testing.T) {
@@ -84,11 +85,21 @@ func TestOrganizationUpdate(t *testing.T) {
8485

8586
var updateFilter interface{}
8687
var updateDoc interface{}
88+
var find bson.Raw
8789

8890
db := &MockDatabase{
8991
FindOne: func(ctx context.Context, filter, dst interface{}) error {
9092
dst.(*Organization).ID = "id"
9193
dst.(*Organization).OwnerEmail = "old@mail.com"
94+
dst.(*Organization).Members = []OrganizationMember{
95+
{
96+
ID: "user",
97+
},
98+
}
99+
100+
f, _ := bson.Marshal(dst)
101+
find = f
102+
92103
return nil
93104
},
94105
UpdateOne: func(ctx context.Context, filter, doc interface{}) error {
@@ -114,7 +125,9 @@ func TestOrganizationUpdate(t *testing.T) {
114125
updateDocSet := updateDoc.(primitive.D)
115126
updateBSON := updateDocSet[0].Value.(bson.Raw)
116127
newOwnerEmailValue := updateBSON.Lookup("ownerEmail")
128+
newMemberValue := updateBSON.Lookup("members")
117129

118130
g.Expect(newOwnerEmailValue).To(Equal(bson.Raw(expectedDoc).Lookup("ownerEmail")))
131+
g.Expect(newMemberValue).To(Equal(find.Lookup("members")))
119132
g.Expect(updateFilter).To(Equal(expectedFilter))
120133
}

0 commit comments

Comments
 (0)