Skip to content
Snippets Groups Projects
Commit bca789e0 authored by Jonah Husson's avatar Jonah Husson
Browse files

change mock send to use channels

parent c2f9fefc
No related branches found
No related tags found
1 merge request!5Update udb to use new switchboard interfaces
...@@ -3,26 +3,19 @@ package testutil ...@@ -3,26 +3,19 @@ package testutil
import ( import (
"gitlab.com/elixxir/client/cmixproto" "gitlab.com/elixxir/client/cmixproto"
"gitlab.com/elixxir/primitives/id" "gitlab.com/elixxir/primitives/id"
"strings"
) )
type MockSender struct { type MockSender struct {
Val bool ch chan string
find string
exclude string
} }
func (d *MockSender) Send(recipientID *id.User, msg string, msgType cmixproto.Type) { func (d *MockSender) Send(recipientID *id.User, msg string, msgType cmixproto.Type) {
if strings.Contains(msg, d.find) && (d.exclude == "" || !strings.Contains(msg, d.exclude)) { d.ch <- msg
d.Val = true
}
} }
func NewMockSender(find, exclude string) *MockSender { func NewMockSender(ch chan string) *MockSender {
d := MockSender{ d := MockSender{
Val: false, ch: ch,
find: find,
exclude: exclude,
} }
return &d return &d
} }
...@@ -6,12 +6,14 @@ import ( ...@@ -6,12 +6,14 @@ import (
"gitlab.com/elixxir/primitives/id" "gitlab.com/elixxir/primitives/id"
fingerprint2 "gitlab.com/elixxir/user-discovery-bot/fingerprint" fingerprint2 "gitlab.com/elixxir/user-discovery-bot/fingerprint"
"gitlab.com/elixxir/user-discovery-bot/testutil" "gitlab.com/elixxir/user-discovery-bot/testutil"
"strings"
"testing" "testing"
"time" "time"
) )
func TestSearchListener_Hear(t *testing.T) { func TestSearchListener_Hear(t *testing.T) {
mockSender := testutil.NewMockSender("FOUND", "") ch := make(chan string, 1)
mockSender := testutil.NewMockSender(ch)
mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, false) mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, false)
var listener = SearchListener{ var listener = SearchListener{
Sender: mockSender, Sender: mockSender,
...@@ -23,15 +25,22 @@ func TestSearchListener_Hear(t *testing.T) { ...@@ -23,15 +25,22 @@ func TestSearchListener_Hear(t *testing.T) {
listener.Hear(msg, false) listener.Hear(msg, false)
time.Sleep(3 * time.Second) select {
case msgStr := <-ch:
if !mockSender.Val { if strings.Contains(msgStr, "SEARCH") && strings.Contains(msgStr, "FOUND") {
t.Error("Did not receive search found message") t.Log("Received found message for search")
} else {
t.Error("Did not receive found message for search")
} }
case <-time.After(5 * time.Second):
t.Error("Test timed out")
}
} }
func TestGetKeyListener_Hear(t *testing.T) { func TestGetKeyListener_Hear(t *testing.T) {
mockSender := testutil.NewMockSender("GETKEY", "NOTFOUND") ch := make(chan string, 1)
mockSender := testutil.NewMockSender(ch)
mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, false) mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, false)
pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" + pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" +
"+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA==" "+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA=="
...@@ -51,13 +60,21 @@ func TestGetKeyListener_Hear(t *testing.T) { ...@@ -51,13 +60,21 @@ func TestGetKeyListener_Hear(t *testing.T) {
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
if !mockSender.Val { select {
t.Error("Did not receive getkey found message") case msgStr := <-ch:
if strings.Contains(msgStr, "GETKEY") && !strings.Contains(msgStr, "NOTFOUND") {
t.Log("Received found message for getkey")
} else {
t.Error("Did not receive found message for search")
}
case <-time.After(5 * time.Second):
t.Error("Test timed out")
} }
} }
func TestPushKeyListener_Hear(t *testing.T) { func TestPushKeyListener_Hear(t *testing.T) {
mockSender := testutil.NewMockSender("PUSHKEY COMPLETE", "") ch := make(chan string, 1)
mockSender := testutil.NewMockSender(ch)
mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, true) mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", false, true)
pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" + pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" +
"+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA==" "+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA=="
...@@ -73,14 +90,22 @@ func TestPushKeyListener_Hear(t *testing.T) { ...@@ -73,14 +90,22 @@ func TestPushKeyListener_Hear(t *testing.T) {
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
if !mockSender.Val { select {
t.Error("Did not receive pushkey complete message") case msgStr := <-ch:
if strings.Contains(msgStr, "PUSHKEY COMPLETE") {
t.Log("Received complete message for pushkey")
} else {
t.Error("Did not receive pushkey complete")
}
case <-time.After(5 * time.Second):
t.Error("Test timed out")
} }
} }
func TestRegisterListener_Hear(t *testing.T) { func TestRegisterListener_Hear(t *testing.T) {
ch := make(chan string, 1)
mockSender := testutil.NewMockSender(ch)
mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", true, false) mockDB := testutil.GetMockDatabase("testid", "testval", "testkeyid", "testkey", true, false)
mockSender := testutil.NewMockSender("REGISTRATION COMPLETE", "")
pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" + pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" +
"+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA==" "+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA=="
...@@ -101,8 +126,14 @@ func TestRegisterListener_Hear(t *testing.T) { ...@@ -101,8 +126,14 @@ func TestRegisterListener_Hear(t *testing.T) {
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
if !mockSender.Val { select {
t.Error("Did not receive register message") case msgStr := <-ch:
if strings.Contains(msgStr, "REGISTRATION COMPLETE") {
t.Log("Received registration complete message")
} else {
t.Error("Did not receive registration complete")
}
case <-time.After(5 * time.Second):
t.Error("Test timed out")
} }
} }
...@@ -28,22 +28,22 @@ import ( ...@@ -28,22 +28,22 @@ import (
) )
var db = storage.NewDatabase("test", "password", "regCodes", "0.0.0.0:6969") var db = storage.NewDatabase("test", "password", "regCodes", "0.0.0.0:6969")
var ch = make(chan string)
var rl = RegisterListener{ var rl = RegisterListener{
Sender: &testutil.MockSender{}, Sender: testutil.NewMockSender(ch),
db: db, db: db,
blacklist: *InitBlackList("./blacklists/bannedNames.txt"), blacklist: *InitBlackList("./blacklists/bannedNames.txt"),
} }
var sl = SearchListener{ var sl = SearchListener{
Sender: &testutil.MockSender{}, Sender: testutil.NewMockSender(ch),
db: db, db: db,
} }
var pl = PushKeyListener{ var pl = PushKeyListener{
Sender: &testutil.MockSender{}, Sender: testutil.NewMockSender(ch),
db: db, db: db,
} }
var gl = GetKeyListener{ var gl = GetKeyListener{
Sender: &testutil.MockSender{}, Sender: testutil.NewMockSender(ch),
db: db, db: db,
} }
...@@ -83,6 +83,15 @@ func NewMessage(msg string, msgType cmixproto.Type, sender *id.User) *parse.Mess ...@@ -83,6 +83,15 @@ func NewMessage(msg string, msgType cmixproto.Type, sender *id.User) *parse.Mess
// NOTE: The send function defaults to a no-op when client is not set up. I am // NOTE: The send function defaults to a no-op when client is not set up. I am
// not sure how I feel about it. // not sure how I feel about it.
func TestRegisterHappyPath(t *testing.T) { func TestRegisterHappyPath(t *testing.T) {
go func() {
for {
select {
case m := <-ch:
t.Logf("received message: %s", m)
default:
}
}
}()
pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" + pubKeyBits := "S8KXBczy0jins9uS4LgBPt0bkFl8t00MnZmExQ6GcOcu8O7DKgAsNzLU7a" +
"+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA==" "+gMTbIsS995IL/kuFF8wcBaQJBY23095PMSQ/nMuetzhk9HdXxrGIiKBo3C/n4SClpq4H+PoF9XziEVKua8JxGM2o83KiCK3tNUpaZbAAElkjueY7wuD96h4oaA+WV5Nh87cnIZ+fAG0uLve2LSHZ0FBZb3glOpNAOv7PFWkvN2BO37ztOQCXTJe72Y5ReoYn7nWVNxGUh0ilal+BRuJt1GZ7whOGDRE0IXfURIoK2yjyAnyZJWWMhfGsL5S6iL4aXUs03mc8BHKRq3HRjvTE10l3YFA=="
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment