Skip to content

Commit

Permalink
dump server test
Browse files Browse the repository at this point in the history
  • Loading branch information
regnull committed Sep 6, 2023
1 parent c179516 commit b2374e4
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 14 deletions.
7 changes: 5 additions & 2 deletions cmd/ubikom-dump/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import (
"fmt"
"net"
"os"
"time"

"github.com/regnull/ubikom/bc"
"github.com/regnull/ubikom/cfg"
"github.com/regnull/ubikom/pb"
"github.com/regnull/ubikom/server"
"github.com/regnull/ubikom/store"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
Expand Down Expand Up @@ -52,11 +54,12 @@ func main() {
log.Fatal().Err(err).Msg("failed to initialize lookup client")
}

dumpServer, err := server.NewDumpServer(dataDir, lookupClient, viper.GetInt("max-message-age-hours"))
maxMessageAgeHours := viper.GetInt("max-message-age-hours")
dumpStore, err := store.NewBadger(dataDir, time.Duration(maxMessageAgeHours)*time.Hour)
if err != nil {
log.Fatal().Err(err).Msg("failed to create data store")
}

dumpServer := server.NewDumpServer(dumpStore, lookupClient)
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", viper.GetInt("port")))
if err != nil {
log.Fatal().Err(err).Msg("failed to listen")
Expand Down
18 changes: 6 additions & 12 deletions server/dump_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,15 @@ const maxAllowedIdentitySignatureDifferenceSeconds = 10000000000.0
type DumpServer struct {
pb.UnimplementedDMSDumpServiceServer

baseDir string
bchain bc.Blockchain
store store.Store
bchain bc.Blockchain
store store.Store
}

func NewDumpServer(baseDir string, bchain bc.Blockchain,
maxMessageAgeHours int) (*DumpServer, error) {
store, err := store.NewBadger(baseDir, time.Duration(maxMessageAgeHours)*time.Hour)
if err != nil {
return nil, err
}
func NewDumpServer(str store.Store, bchain bc.Blockchain) *DumpServer {
return &DumpServer{
baseDir: baseDir,
bchain: bchain,
store: store}, nil
store: str,
bchain: bchain,
}
}

func (s *DumpServer) Send(ctx context.Context, req *pb.SendRequest) (*pb.SendResponse, error) {
Expand Down
62 changes: 62 additions & 0 deletions server/dump_server_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package server

import (
"context"
"testing"
"time"

"github.com/regnull/easyecc/v2"
bcmocks "github.com/regnull/ubikom/bc/mocks"
"github.com/regnull/ubikom/pb"
"github.com/regnull/ubikom/protoutil"
"github.com/regnull/ubikom/store"
"github.com/stretchr/testify/assert"
)

func Test_DumpServer_SendReceive(t *testing.T) {
assert := assert.New(t)

dumpStore := store.NewMemory()
bchain := new(bcmocks.MockBlockchain)
ctx := context.Background()
dumpServer := NewDumpServer(dumpStore, bchain)

aliceKey, err := easyecc.NewPrivateKey(easyecc.P256)
assert.NoError(err)
bobKey, err := easyecc.NewPrivateKey(easyecc.P256)
assert.NoError(err)

bchain.EXPECT().PublicKeyByCurve(ctx, "alice",
easyecc.P256).Return(aliceKey.PublicKey(), nil)
bchain.EXPECT().PublicKeyByCurve(ctx, "bob",
easyecc.P256).Return(bobKey.PublicKey(), nil)

msg, err := protoutil.CreateMessage(aliceKey, []byte("hi bob"), "alice", "bob", bobKey.PublicKey())
assert.NoError(err)

sendRes, err := dumpServer.Send(ctx, &pb.SendRequest{Message: msg})
assert.NoError(err)
assert.NotNil(sendRes)

identityProof, err := protoutil.IdentityProof(bobKey, time.Now())
assert.NoError(err)
req := &pb.ReceiveRequest{
IdentityProof: identityProof,
CryptoContext: &pb.CryptoContext{
EllipticCurve: pb.EllipticCurve(easyecc.P256),
EcdhVersion: 2,
EcdsaVersion: 1,
},
}
receiveRes, err := dumpServer.Receive(ctx, req)
assert.NoError(err)
assert.NotNil(receiveRes)
assert.Equal("alice", receiveRes.GetMessage().GetSender())
assert.Equal("bob", receiveRes.GetMessage().GetReceiver())

content, err := protoutil.DecryptMessage(ctx, bchain, bobKey, receiveRes.GetMessage())
assert.NoError(err)
assert.Equal("hi bob", content)

bchain.AssertExpectations(t)
}

0 comments on commit b2374e4

Please sign in to comment.