go-ssb-room/roomdb/sqlite/denied_test.go

157 lines
3.3 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021
//
2021-03-19 11:28:14 +00:00
// SPDX-License-Identifier: MIT
2021-02-11 15:43:19 +00:00
package sqlite
import (
"bytes"
"context"
"os"
"path/filepath"
"testing"
2021-03-19 11:28:14 +00:00
"time"
2021-02-11 15:43:19 +00:00
"github.com/ssbc/go-ssb-room/v2/roomdb"
refs "github.com/ssbc/go-ssb-refs"
"github.com/ssbc/go-ssb-room/v2/internal/repo"
"github.com/ssbc/go-ssb-room/v2/roomdb/sqlite/models"
2021-02-11 15:43:19 +00:00
"github.com/stretchr/testify/require"
)
2021-03-19 11:28:14 +00:00
func TestDeniedKeys(t *testing.T) {
2021-02-11 15:43:19 +00:00
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
tf, err := refs.NewFeedRefFromBytes(bytes.Repeat([]byte("fooo"), 8), "nope")
if err != nil {
r.Error(err)
}
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.Add(ctx, tf, "wont work anyhow")
2021-02-11 15:43:19 +00:00
r.Error(err)
// looks ok at least
2021-03-19 11:28:14 +00:00
created := time.Now()
time.Sleep(time.Second)
okFeed, err := refs.NewFeedRefFromBytes(bytes.Repeat([]byte("b44d"), 8), refs.RefAlgoFeedSSB1)
if err != nil {
r.Error(err)
}
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.Add(ctx, okFeed, "be gone")
2021-02-11 15:43:19 +00:00
r.NoError(err)
// hack into the interface to get the concrete database/sql instance
2021-03-19 11:28:14 +00:00
sqlDB := db.DeniedKeys.db
2021-03-19 11:28:14 +00:00
count, err := models.DeniedKeys().Count(ctx, sqlDB)
2021-02-11 15:43:19 +00:00
r.NoError(err)
r.EqualValues(count, 1)
2021-03-19 11:28:14 +00:00
lst, err := db.DeniedKeys.List(ctx)
2021-02-11 15:43:19 +00:00
r.NoError(err)
r.Len(lst, 1)
r.Equal(okFeed.String(), lst[0].PubKey.String())
2021-03-19 11:28:14 +00:00
r.Equal("be gone", lst[0].Comment)
r.True(lst[0].CreatedAt.After(created), "not created after the sleep?")
2021-02-11 15:43:19 +00:00
2021-03-19 11:28:14 +00:00
yes := db.DeniedKeys.HasFeed(ctx, okFeed)
2021-02-11 15:43:19 +00:00
r.True(yes)
2021-03-19 11:28:14 +00:00
yes = db.DeniedKeys.HasFeed(ctx, tf)
2021-02-11 15:43:19 +00:00
r.False(yes)
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.RemoveFeed(ctx, okFeed)
2021-02-11 15:43:19 +00:00
r.NoError(err)
2021-03-19 11:28:14 +00:00
count, err = models.DeniedKeys().Count(ctx, sqlDB)
2021-02-11 15:43:19 +00:00
r.NoError(err)
r.EqualValues(count, 0)
2021-03-19 11:28:14 +00:00
lst, err = db.DeniedKeys.List(ctx)
2021-02-11 15:43:19 +00:00
r.NoError(err)
r.Len(lst, 0)
2021-03-19 11:28:14 +00:00
yes = db.DeniedKeys.HasFeed(ctx, okFeed)
2021-02-11 15:43:19 +00:00
r.False(yes)
r.NoError(db.Close())
}
2021-03-19 11:28:14 +00:00
func TestDeniedKeysUnique(t *testing.T) {
2021-02-11 15:43:19 +00:00
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
feedA, err := refs.NewFeedRefFromBytes(bytes.Repeat([]byte("b33f"), 8), refs.RefAlgoFeedSSB1)
if err != nil {
r.Error(err)
}
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.Add(ctx, feedA, "test comment")
2021-02-11 15:43:19 +00:00
r.NoError(err)
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.Add(ctx, feedA, "test comment")
2021-02-11 15:43:19 +00:00
r.Error(err)
2021-03-19 11:28:14 +00:00
lst, err := db.DeniedKeys.List(ctx)
2021-02-11 15:43:19 +00:00
r.NoError(err)
r.Len(lst, 1)
r.NoError(db.Close())
}
2021-03-19 11:28:14 +00:00
func TestDeniedKeysByID(t *testing.T) {
r := require.New(t)
ctx := context.Background()
testRepo := filepath.Join("testrun", t.Name())
os.RemoveAll(testRepo)
tr := repo.New(testRepo)
db, err := Open(tr)
require.NoError(t, err)
feedA, err := refs.NewFeedRefFromBytes(bytes.Repeat([]byte("b33f"), 8), refs.RefAlgoFeedSSB1)
if err != nil {
r.Error(err)
}
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.Add(ctx, feedA, "nope")
r.NoError(err)
2021-03-19 11:28:14 +00:00
lst, err := db.DeniedKeys.List(ctx)
r.NoError(err)
r.Len(lst, 1)
2021-03-19 11:28:14 +00:00
yes := db.DeniedKeys.HasID(ctx, lst[0].ID)
r.True(yes)
2021-03-19 11:28:14 +00:00
yes = db.DeniedKeys.HasID(ctx, 666)
r.False(yes)
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.RemoveID(ctx, 666)
r.Error(err)
2021-03-10 15:44:46 +00:00
r.EqualError(err, roomdb.ErrNotFound.Error())
2021-03-19 11:28:14 +00:00
err = db.DeniedKeys.RemoveID(ctx, lst[0].ID)
r.NoError(err)
2021-03-19 11:28:14 +00:00
yes = db.DeniedKeys.HasID(ctx, lst[0].ID)
r.False(yes)
}