]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server_blackbox_test.go
Revert change to effectiveFile func
[rbdr/mobius] / hotline / server_blackbox_test.go
index b8990adc6fa3456e70691f83d7567e6e53526b1a..4e7ea8e2e13a19056fab738c69473d2a21f24638 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"
 )
 
@@ -22,7 +23,7 @@ type testCase struct {
 }
 
 func (tt *testCase) Setup(srv *Server) error {
-       if err := srv.NewUser(tt.account.Login, tt.account.Name, NegatedUserString([]byte(tt.account.Password)), *tt.account.Access); err != nil {
+       if err := srv.NewUser(tt.account.Login, tt.account.Name, string(negateString([]byte(tt.account.Password))), *tt.account.Access); err != nil {
                return err
        }
 
@@ -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()
 
@@ -92,7 +103,7 @@ func TestHandshake(t *testing.T) {
        }
        defer conn.Close()
 
-       conn.Write([]byte{0x54, 0x52, 0x54, 0x50, 0x00, 0x01, 0x00, 0x00})
+       conn.Write([]byte{0x54, 0x52, 0x54, 0x50, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02})
 
        replyBuf := make([]byte, 8)
        _, _ = conn.Read(replyBuf)
@@ -104,7 +115,7 @@ func TestHandshake(t *testing.T) {
 
 }
 
-//func TestLogin(t *testing.T) {
+// func TestLogin(t *testing.T) {
 //
 //     tests := []struct {
 //             name   string
@@ -120,14 +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{}
@@ -170,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{}
@@ -201,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)
@@ -241,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() {
                //
@@ -269,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 {
@@ -291,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)
@@ -310,24 +320,20 @@ func TestNewUser(t *testing.T) {
        }
 }
 
+// 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)
+       }
 
+       for _, trans := range tran2 {
+               trans.ID = []byte{0, 0, 0, 0}
+               newT2 = append(newT2, trans)
 
-// 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}
-
-       t.ParamCount = []byte{0, 0}
-       otherT.ParamCount = []byte{0, 0}
-
-       //spew.Dump(t)
-       //spew.Dump(otherT)
+       }
 
-       return reflect.DeepEqual(t, otherT)
+       return assert.Equal(t, newT1, newT2)
 }