]> git.r.bdr.sh - rbdr/mobius/blame - hotline/server_blackbox_test.go
Delete cmd/mobius-hotline-server/mobius/config/Files/hello.txt
[rbdr/mobius] / hotline / server_blackbox_test.go
CommitLineData
6988a057
JH
1package hotline
2
625b0580 3import (
a2ef262a
JH
4 "cmp"
5 "encoding/binary"
7cd900d6 6 "encoding/hex"
00d1ef67 7 "github.com/stretchr/testify/assert"
a6216dd8 8 "log/slog"
625b0580 9 "os"
a2ef262a 10 "slices"
625b0580
JH
11 "testing"
12)
13
a6216dd8
JH
14func NewTestLogger() *slog.Logger {
15 return slog.New(slog.NewTextHandler(os.Stdout, nil))
625b0580
JH
16}
17
7cd900d6
JH
18// assertTransferBytesEqual takes a string with a hexdump in the same format that `hexdump -C` produces and compares with
19// a hexdump for the bytes in got, after stripping the create/modify timestamps.
20// I don't love this, but as git does not preserve file create/modify timestamps, we either need to fully mock the
21// filesystem interactions or work around in this way.
22// TODO: figure out a better solution
23func assertTransferBytesEqual(t *testing.T, wantHexDump string, got []byte) bool {
24 if wantHexDump == "" {
25 return true
26 }
27
d9bc63a1
JH
28 clean := slices.Concat(
29 got[:92],
30 make([]byte, 16),
31 got[108:],
32 )
7cd900d6
JH
33 return assert.Equal(t, wantHexDump, hex.Dump(clean))
34}
35
a2ef262a
JH
36var tranSortFunc = func(a, b Transaction) int {
37 return cmp.Compare(
fd740bc4
JH
38 binary.BigEndian.Uint16(a.ClientID[:]),
39 binary.BigEndian.Uint16(b.ClientID[:]),
a2ef262a
JH
40 )
41}
42
fd740bc4
JH
43// TranAssertEqual compares equality of transactions slices after stripping out the random transaction Type
44func TranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool {
00d1ef67
JH
45 var newT1 []Transaction
46 var newT2 []Transaction
7cd900d6 47
92a7e455 48 for _, trans := range tran1 {
153e2eac 49 trans.ID = [4]byte{0, 0, 0, 0}
7cd900d6
JH
50 var fs []Field
51 for _, field := range trans.Fields {
d9bc63a1 52 if field.Type == FieldRefNum { // FieldRefNum
f8e4cd54
JH
53 continue
54 }
d9bc63a1 55 if field.Type == FieldChatID { // FieldChatID
7cd900d6
JH
56 continue
57 }
d9bc63a1 58
a2ef262a 59 fs = append(fs, field)
7cd900d6
JH
60 }
61 trans.Fields = fs
00d1ef67
JH
62 newT1 = append(newT1, trans)
63 }
625b0580 64
92a7e455 65 for _, trans := range tran2 {
153e2eac 66 trans.ID = [4]byte{0, 0, 0, 0}
7cd900d6
JH
67 var fs []Field
68 for _, field := range trans.Fields {
d9bc63a1 69 if field.Type == FieldRefNum { // FieldRefNum
f8e4cd54
JH
70 continue
71 }
d9bc63a1 72 if field.Type == FieldChatID { // FieldChatID
7cd900d6
JH
73 continue
74 }
d9bc63a1 75
a2ef262a 76 fs = append(fs, field)
7cd900d6
JH
77 }
78 trans.Fields = fs
00d1ef67 79 newT2 = append(newT2, trans)
00d1ef67 80 }
625b0580 81
a2ef262a
JH
82 slices.SortFunc(newT1, tranSortFunc)
83 slices.SortFunc(newT2, tranSortFunc)
84
00d1ef67 85 return assert.Equal(t, newT1, newT2)
92a7e455 86}