add test for appendSetting

Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
jkoberg
2022-02-28 16:39:07 +01:00
parent e23448f581
commit 4c22c07711
4 changed files with 91 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ package store
import (
"log"
"sync"
"testing"
olog "github.com/owncloud/ocis/ocis-pkg/log"
@@ -16,6 +17,7 @@ var (
s = Store{
Logger: logger,
mdc: mdc,
l: &sync.Mutex{},
}
logger = olog.NewLogger(
@@ -85,7 +87,7 @@ func init() {
func setupRoles() {
for i := range bundles {
if _, err := s.WriteBundle(bundles[i]); err != nil {
log.Fatal(err)
log.Fatal("error initializing ", err)
}
}
}

View File

@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"github.com/gofrs/uuid"
settingsmsg "github.com/owncloud/ocis/protogen/gen/ocis/messages/settings/v0"
)
@@ -86,7 +87,22 @@ func (s Store) WriteBundle(record *settingsmsg.Bundle) (*settingsmsg.Bundle, err
// AddSettingToBundle adds the given setting to the bundle with the given bundleID.
func (s Store) AddSettingToBundle(bundleID string, setting *settingsmsg.Setting) (*settingsmsg.Setting, error) {
return nil, errors.New("not implemented")
s.Init()
b, err := s.ReadBundle(bundleID)
if err != nil {
// TODO: How to differentiate 'not found'?
b = new(settingsmsg.Bundle)
b.Id = bundleID
b.Type = settingsmsg.Bundle_TYPE_DEFAULT
}
if setting.Id == "" {
setting.Id = uuid.Must(uuid.NewV4()).String()
}
b.Settings = append(b.Settings, setting)
_, err = s.WriteBundle(b)
return setting, err
}
// RemoveSettingFromBundle removes the setting from the bundle with the given ids.

View File

@@ -1,6 +1,7 @@
package store
import (
"sync"
"testing"
olog "github.com/owncloud/ocis/ocis-pkg/log"
@@ -101,6 +102,42 @@ var bundleScenarios = []struct {
},
}
var (
appendTestBundleID = "append-test-bundle"
appendTestSetting1 = &settingsmsg.Setting{
Id: "append-test-setting-1",
Description: "test-desc-3",
DisplayName: "test-displayname-3",
Resource: &settingsmsg.Resource{
Type: settingsmsg.Resource_TYPE_SETTING,
Id: setting1,
},
Value: &settingsmsg.Setting_PermissionValue{
PermissionValue: &settingsmsg.Permission{
Operation: settingsmsg.Permission_OPERATION_READ,
Constraint: settingsmsg.Permission_CONSTRAINT_OWN,
},
},
}
appendTestSetting2 = &settingsmsg.Setting{
Id: "append-test-setting-2",
Description: "test-desc-3",
DisplayName: "test-displayname-3",
Resource: &settingsmsg.Resource{
Type: settingsmsg.Resource_TYPE_SETTING,
Id: setting1,
},
Value: &settingsmsg.Setting_PermissionValue{
PermissionValue: &settingsmsg.Permission{
Operation: settingsmsg.Permission_OPERATION_READ,
Constraint: settingsmsg.Permission_CONSTRAINT_OWN,
},
},
}
)
func TestBundles(t *testing.T) {
mdc := NewMDC()
s := Store{
@@ -110,6 +147,7 @@ func TestBundles(t *testing.T) {
olog.Level("info"),
),
l: &sync.Mutex{},
mdc: mdc,
}
@@ -147,3 +185,33 @@ func TestBundles(t *testing.T) {
require.Equal(t, settingsmsg.Bundle_TYPE_ROLE, roles[i].Type)
}
}
func TestAppendSetting(t *testing.T) {
mdc := NewMDC()
s := Store{
Logger: olog.NewLogger(
olog.Color(true),
olog.Pretty(true),
olog.Level("info"),
),
l: &sync.Mutex{},
mdc: mdc,
}
// appending to non existing bundle creates new
_, err := s.AddSettingToBundle(appendTestBundleID, appendTestSetting1)
require.NoError(t, err)
b, err := s.ReadBundle(appendTestBundleID)
require.NoError(t, err)
require.Len(t, b.Settings, 1)
_, err = s.AddSettingToBundle(appendTestBundleID, appendTestSetting2)
require.NoError(t, err)
b, err = s.ReadBundle(appendTestBundleID)
require.NoError(t, err)
require.Len(t, b.Settings, 2)
}

View File

@@ -118,7 +118,9 @@ func (s Store) initMetadataClient() error {
}
}
s.initStore(s)
if s.initStore != nil {
s.initStore(s)
}
return nil
}