Files
beacon-server/db/scopes_test.go
T
Enot (ded) Skelly 64ff9fc030 maint(tests): start adding integration tests
first db <> api mapping

add filter to test coverage action to ignore generated
code like sqlc and swagger docs
2026-06-15 13:26:03 -07:00

96 lines
2.4 KiB
Go

package db
import (
"bytes"
"context"
"testing"
sqlc "github.com/MeshCore-Beacon/beacon-server/db/sqlc"
mockdb "github.com/MeshCore-Beacon/beacon-server/db/sqlc/mock"
"go.uber.org/mock/gomock"
)
func TestGetTransportScopes(t *testing.T) {
ctrl := gomock.NewController(t)
mock := mockdb.NewMockQuerier(ctrl)
mock.EXPECT().
GetTransportScopes(gomock.Any()).
Return([]sqlc.GetTransportScopesRow{
{
Name: "default",
TransportKey: []byte{0x01, 0x02},
KeyFingerprint: []byte{0xde, 0xad},
},
}, nil)
store := &Store{q: mock}
entries, err := store.GetTransportScopes(context.Background())
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(entries) != 1 {
t.Fatalf("expected 1 entry, got %d", len(entries))
}
if entries[0].Name != "default" {
t.Errorf("expected Name default, got %s", entries[0].Name)
}
if !bytes.Equal(entries[0].TransportKey, []byte{0x01, 0x02}) {
t.Errorf("expected TransportKey [0x01 0x02], got %v", entries[0].TransportKey)
}
}
func TestGetScopesByIATAs(t *testing.T) {
ctrl := gomock.NewController(t)
mock := mockdb.NewMockQuerier(ctrl)
mock.EXPECT().
GetScopesByIATAs(gomock.Any(), "YVR,YYJ").
Return([]sqlc.GetScopesByIATAsRow{
{Name: "default", ObserverCount: 3, NodeCount: 10, IataCount: 2},
}, nil)
store := &Store{q: mock}
items, err := store.GetScopesByIATAs(context.Background(), []string{"YVR", "YYJ"})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(items) != 1 {
t.Fatalf("expected 1 item, got %d", len(items))
}
if items[0].IATACount != 2 {
t.Errorf("expected IATACount 2, got %d", items[0].IATACount)
}
}
func TestGetScopeByName(t *testing.T) {
ctrl := gomock.NewController(t)
mock := mockdb.NewMockQuerier(ctrl)
mock.EXPECT().
GetScopeByName(gomock.Any(), "default").
Return(sqlc.GetScopeByNameRow{
Name: "default",
PacketCount: 100,
ObserverCount: 5,
NodeCount: 20,
IataCount: 3,
Iatas: []string{"YVR", "YYJ", "YYC"},
}, nil)
store := &Store{q: mock}
detail, err := store.GetScopeByName(context.Background(), "default")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if detail.Name != "default" {
t.Errorf("expected Name default, got %s", detail.Name)
}
if len(detail.IATAs) != 3 {
t.Errorf("expected 3 IATAs, got %d", len(detail.IATAs))
}
if detail.PacketCount != 100 {
t.Errorf("expected PacketCount 100, got %d", detail.PacketCount)
}
}