2021-03-18 16:49:52 +00:00
|
|
|
// +build ignore
|
|
|
|
|
2021-02-11 15:43:19 +00:00
|
|
|
package sqlite
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"context"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
|
|
|
|
2021-03-10 15:44:46 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb"
|
2021-02-15 09:40:43 +00:00
|
|
|
|
2021-02-11 15:43:19 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/internal/repo"
|
2021-03-16 14:11:13 +00:00
|
|
|
"github.com/ssb-ngi-pointer/go-ssb-room/roomdb/sqlite/models"
|
2021-02-11 15:43:19 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
refs "go.mindeco.de/ssb-refs"
|
|
|
|
)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
func TestDeniedList(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 := refs.FeedRef{ID: bytes.Repeat([]byte("fooo"), 8), Algo: "nope"}
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.Add(ctx, tf)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.Error(err)
|
|
|
|
|
|
|
|
// looks ok at least
|
|
|
|
okFeed := refs.FeedRef{ID: bytes.Repeat([]byte("acab"), 8), Algo: refs.RefAlgoFeedSSB1}
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.Add(ctx, okFeed)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
|
2021-03-02 16:14:02 +00:00
|
|
|
// hack into the interface to get the concrete database/sql instance
|
2021-03-18 16:49:52 +00:00
|
|
|
sqlDB := db.DeniedList.(*DeniedList).db
|
2021-03-02 16:14:02 +00:00
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
count, err := models.DeniedLists().Count(ctx, sqlDB)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.EqualValues(count, 1)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
lst, err := db.DeniedList.List(ctx)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.Len(lst, 1)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes := db.DeniedList.HasFeed(ctx, okFeed)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.True(yes)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes = db.DeniedList.HasFeed(ctx, tf)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.False(yes)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.RemoveFeed(ctx, okFeed)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
count, err = models.DeniedLists().Count(ctx, sqlDB)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.EqualValues(count, 0)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
lst, err = db.DeniedList.List(ctx)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.Len(lst, 0)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes = db.DeniedList.HasFeed(ctx, okFeed)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.False(yes)
|
|
|
|
|
|
|
|
r.NoError(db.Close())
|
|
|
|
}
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
func TestDeniedListUnique(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 := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.Add(ctx, feedA)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.Add(ctx, feedA)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.Error(err)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
lst, err := db.DeniedList.List(ctx)
|
2021-02-11 15:43:19 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.Len(lst, 1)
|
|
|
|
|
|
|
|
r.NoError(db.Close())
|
|
|
|
}
|
2021-02-15 09:40:43 +00:00
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
func TestDeniedListByID(t *testing.T) {
|
2021-02-15 09:40:43 +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 := refs.FeedRef{ID: bytes.Repeat([]byte("1312"), 8), Algo: refs.RefAlgoFeedSSB1}
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.Add(ctx, feedA)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.NoError(err)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
lst, err := db.DeniedList.List(ctx)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.NoError(err)
|
|
|
|
r.Len(lst, 1)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes := db.DeniedList.HasID(ctx, lst[0].ID)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.True(yes)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes = db.DeniedList.HasID(ctx, 666)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.False(yes)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.RemoveID(ctx, 666)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.Error(err)
|
2021-03-10 15:44:46 +00:00
|
|
|
r.EqualError(err, roomdb.ErrNotFound.Error())
|
2021-02-15 09:40:43 +00:00
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
err = db.DeniedList.RemoveID(ctx, lst[0].ID)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.NoError(err)
|
|
|
|
|
2021-03-18 16:49:52 +00:00
|
|
|
yes = db.DeniedList.HasID(ctx, lst[0].ID)
|
2021-02-15 09:40:43 +00:00
|
|
|
r.False(yes)
|
|
|
|
}
|