]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server_blackbox_test.go
Implement handling of special case Dropbox and Upload folders
[rbdr/mobius] / hotline / server_blackbox_test.go
index 09687add34f869f5f5a347946a3c8dd6161c9ba5..ee5f76b04d68ec43ef08b0c46e6f5dd4444aa992 100644 (file)
@@ -4,11 +4,12 @@ import (
        "bytes"
        "context"
        "fmt"
+       "github.com/davecgh/go-spew/spew"
+       "github.com/stretchr/testify/assert"
        "go.uber.org/zap"
        "go.uber.org/zap/zapcore"
        "net"
        "os"
-       "reflect"
        "testing"
 )
 
@@ -65,6 +66,8 @@ func NewTestLogger() *zap.SugaredLogger {
 func StartTestServer() (*Server, context.Context, context.CancelFunc) {
        ctx, cancelRoot := context.WithCancel(context.Background())
 
+       FS = &OSFileStore{}
+
        srv, err := NewServer("test/config/", "localhost", 0, NewTestLogger())
        if err != nil {
                panic(err)
@@ -81,6 +84,14 @@ func StartTestServer() (*Server, context.Context, context.CancelFunc) {
 }
 
 func TestHandshake(t *testing.T) {
+       mfs := &MockFileStore{}
+       fh, _ := os.Open("./test/config/Agreement.txt")
+       mfs.On("Open", "/test/config/Agreement.txt").Return(fh, nil)
+       fh, _ = os.Open("./test/config/config.yaml")
+       mfs.On("Open", "/test/config/config.yaml").Return(fh, nil)
+       FS = mfs
+       spew.Dump(mfs)
+
        srv, _, cancelFunc := StartTestServer()
        defer cancelFunc()
 
@@ -104,7 +115,7 @@ func TestHandshake(t *testing.T) {
 
 }
 
-//func TestLogin(t *testing.T) {
+// func TestLogin(t *testing.T) {
 //
 //     tests := []struct {
 //             name   string
@@ -120,13 +131,13 @@ func TestHandshake(t *testing.T) {
 //
 //             })
 //     }
-//}
+// }
 
 func TestNewUser(t *testing.T) {
        srv, _, _ := StartTestServer()
 
        tests := []testCase{
-               //{
+               // {
                //      name: "a valid new account",
                //      mockHandler: func() mockClientHandler {
                //              mh := mockClientHandler{}
@@ -169,8 +180,8 @@ func TestNewUser(t *testing.T) {
                //      want: &Transaction{
                //              Fields: []Field{},
                //      },
-               //},
-               //{
+               // },
+               // {
                //      name: "a newUser request from a user without the required access",
                //      mockHandler: func() *mockClientHandler {
                //              mh := mockClientHandler{}
@@ -200,8 +211,8 @@ func TestNewUser(t *testing.T) {
                //              NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
                //              NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
                //      ),
-               //},
-               //{
+               // },
+               // {
                //      name: "when user does not have required permission",
                //      mockHandler: func() map[int]*mockClientHandler {
                //              mockHandlers := make(map[int]*mockClientHandler)
@@ -240,9 +251,9 @@ func TestNewUser(t *testing.T) {
                //              NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
                //              NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
                //      ),
-               //},
+               // },
 
-               //{
+               // {
                //      name: "a request to create a user that already exists",
                //      setup: func() {
                //
@@ -268,7 +279,7 @@ func TestNewUser(t *testing.T) {
                //                      NewField(fieldError, []byte("Cannot create account guest because there is already an account with that login.")),
                //              },
                //      },
-               //},
+               // },
        }
 
        for _, test := range tests {
@@ -290,7 +301,7 @@ func TestNewUser(t *testing.T) {
                        // send test case request
                        _ = c.Send(*test.request)
 
-                       //time.Sleep(1 * time.Second)
+                       // time.Sleep(1 * time.Second)
                        // ===
 
                        transactions, _ := readN(c.Connection, 1)
@@ -309,22 +320,20 @@ func TestNewUser(t *testing.T) {
        }
 }
 
-// equal is a utility function used only in tests that determines if transactions are equal enough
-func (t Transaction) equal(otherT Transaction) bool {
-       t.ID = []byte{0, 0, 0, 0}
-       otherT.ID = []byte{0, 0, 0, 0}
-
-       t.TotalSize = []byte{0, 0, 0, 0}
-       otherT.TotalSize = []byte{0, 0, 0, 0}
-
-       t.DataSize = []byte{0, 0, 0, 0}
-       otherT.DataSize = []byte{0, 0, 0, 0}
+// tranAssertEqual compares equality of transactions slices after stripping out the random ID
+func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool {
+       var newT1 []Transaction
+       var newT2 []Transaction
+       for _, trans := range tran1 {
+               trans.ID = []byte{0, 0, 0, 0}
+               newT1 = append(newT1, trans)
+       }
 
-       t.ParamCount = []byte{0, 0}
-       otherT.ParamCount = []byte{0, 0}
+       for _, trans := range tran2 {
+               trans.ID = []byte{0, 0, 0, 0}
+               newT2 = append(newT2, trans)
 
-       //spew.Dump(t)
-       //spew.Dump(otherT)
+       }
 
-       return reflect.DeepEqual(t, otherT)
+       return assert.Equal(t, newT1, newT2)
 }