| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package measure_test |
| |
| import ( |
| "reflect" |
| "testing" |
| |
| "v.io/v23/verror" |
| _ "v.io/x/ref/runtime/factories/generic" |
| sbtu "v.io/x/ref/services/syncbase/testutil" |
| "v.io/x/sensorlog_lite/internal/config" |
| "v.io/x/sensorlog_lite/internal/measure" |
| "v.io/x/sensorlog_lite/internal/sbutil" |
| ) |
| |
| func TestCreateSyncgroup(t *testing.T) { |
| _, ctxMeasured, sbName, _, cleanup := sbtu.SetupOrDieCustom("one", "one/sb", nil) |
| defer cleanup() |
| |
| // Open app/db (create both) as measured. |
| db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, config.AllTables) |
| if err != nil { |
| t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err) |
| } |
| |
| devId := "measured1" |
| admin := "root/two" |
| syncMts := []string{} |
| |
| // Creating the syncgroup should succeed. |
| if err := measure.InitSyncGroup(ctxMeasured, db, devId, admin, sbName, syncMts); err != nil { |
| t.Fatalf("InitSyncGroup failed: %v", err) |
| } |
| |
| sgName := config.SyncGroupName(sbName, devId) |
| if sgs, err := db.GetSyncGroupNames(ctxMeasured); err != nil { |
| t.Fatalf("GetSyncGroupNames failed: %v", err) |
| } else if got, want := sgs, []string{sgName}; !reflect.DeepEqual(got, want) { |
| t.Errorf("GetSyncGroupNames got: %v, want: %v", got, want) |
| } |
| |
| // Creating the syncgroup should be idempotent. |
| if err := measure.InitSyncGroup(ctxMeasured, db, devId, admin, sbName, syncMts); err != nil { |
| t.Errorf("InitSyncGroup should be idempotent, retry failed: %v", err) |
| } |
| |
| // measured should have dropped privileges on <StreamDefTable>/<devId>. |
| sgDataRow := db.Table(config.StreamDefTable).Row(devId + "$" + "foo") |
| if err := sgDataRow.Put(ctxMeasured, "bar"); verror.ErrorID(err) != verror.ErrNoAccess.ID { |
| t.Errorf("Put by measured should have failed with ErrNoAccess, got: %v", err) |
| } |
| } |