From 74f66ffce2005ed40c7048204603e060b6b7c84d Mon Sep 17 00:00:00 2001 From: Mihai Moldovanu Date: Wed, 23 Mar 2022 03:22:18 +0200 Subject: [PATCH 1/2] refactor sendPingReply and added first unit test for login --- sending_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 sending_test.go diff --git a/sending_test.go b/sending_test.go new file mode 100644 index 0000000..3ca67da --- /dev/null +++ b/sending_test.go @@ -0,0 +1,43 @@ +package main + +import ( + "net" + "testing" +) + +// Test scafolding +func TestSendLogin(t *testing.T) { + testTable := []struct { + name string + pass string + resultBuffer []byte + resultLenght int + // input, output + }{ + { + name: "happy", + pass: "happy2", + resultBuffer: []byte{140, 15, 0, 104, 97, 112, 112, 121, 32, 104, 97, 112, 112, 121, 50, 0, 0}, + resultLenght: 17, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + // call function or method under test + // .... + // check respose + server, client := net.Pipe() + + go func() { + sendLogin(client, tt.name, tt.pass) + }() + + reply := make([]byte, 4096) + length, _ := server.Read(reply) + if length != tt.resultLenght { + t.Errorf("Expected length %v, got %v buffer: %v for %s / %s", tt.resultLenght, length, reply[0:length], tt.name, tt.pass) + } + }) + } +} -- 2.47.2 From ddec70f4d7bd4007ab4a75cd6924e28bcb37449b Mon Sep 17 00:00:00 2001 From: Mihai Moldovanu Date: Wed, 23 Mar 2022 03:23:48 +0200 Subject: [PATCH 2/2] sendLogin --- sending.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/sending.go b/sending.go index 15f5035..43d173d 100644 --- a/sending.go +++ b/sending.go @@ -5,29 +5,25 @@ import ( "net" ) -/* login to El */ +/* Login to El */ func sendLogin(c net.Conn, user string, password string) { s := user + " " + password - lungime := len(s) + 3 - b := make([]byte, lungime+2) + length := len(s) + 3 + b := make([]byte, length+2) b[0] = 140 - b[1] = byte(lungime % 256) - b[2] = byte(lungime / 256) + b[1] = byte(length % 256) + b[2] = byte(length / 256) copy(b[3:], s) - b[lungime+1] = 0 + b[length+1] = 0 binary.Write(c, binary.LittleEndian, b) } /* Send back to server what we received */ func sendPingReply(c net.Conn, b []byte) { ping_reply := make([]byte, 7) - ping_reply[0] = b[0] - ping_reply[1] = b[1] - ping_reply[2] = b[2] - ping_reply[3] = b[3] - ping_reply[4] = b[4] - ping_reply[5] = b[5] - ping_reply[6] = b[6] + for i := 0; i < 7; i++ { + ping_reply[i] = b[i] + } binary.Write(c, binary.LittleEndian, ping_reply) } -- 2.47.2