Browse Source

Add tests for faketls record

tags/v2.0.0-rc1
9seconds 5 years ago
parent
commit
64754d1039

+ 110
- 0
mtglib/internal/faketls/record/record_test.go View File

@@ -0,0 +1,110 @@
1
+package record_test
2
+
3
+import (
4
+	"bytes"
5
+	"encoding/base64"
6
+	"encoding/json"
7
+	"os"
8
+	"path/filepath"
9
+	"testing"
10
+
11
+	"github.com/9seconds/mtg/v2/mtglib/internal/faketls/record"
12
+	"github.com/stretchr/testify/assert"
13
+	"github.com/stretchr/testify/suite"
14
+)
15
+
16
+type RecordTestSnapshot struct {
17
+	Type    int    `json:"type"`
18
+	Version int    `json:"version"`
19
+	Payload string `json:"payload"`
20
+	Record  string `json:"record"`
21
+}
22
+
23
+func (r RecordTestSnapshot) RecordBytes() []byte {
24
+	data, _ := base64.StdEncoding.DecodeString(r.Record)
25
+
26
+	return data
27
+}
28
+
29
+func (r RecordTestSnapshot) PayloadBytes() []byte {
30
+	data, _ := base64.StdEncoding.DecodeString(r.Payload)
31
+
32
+	return data
33
+}
34
+
35
+type RecordTestSuite struct {
36
+	suite.Suite
37
+
38
+	r   *record.Record
39
+	buf *bytes.Buffer
40
+}
41
+
42
+func (suite *RecordTestSuite) SetupTest() {
43
+	suite.r = record.AcquireRecord()
44
+	suite.buf = &bytes.Buffer{}
45
+}
46
+
47
+func (suite *RecordTestSuite) TearDownTest() {
48
+	record.ReleaseRecord(suite.r)
49
+	suite.buf.Reset()
50
+}
51
+
52
+func (suite *RecordTestSuite) TestIdempotent() {
53
+	suite.r.Type = record.TypeApplicationData
54
+	suite.r.Version = record.Version13
55
+
56
+	suite.r.Payload.Write([]byte{1, 2, 3})
57
+	suite.NoError(suite.r.Dump(suite.buf))
58
+
59
+	suite.r.Reset()
60
+	suite.NoError(suite.r.Read(suite.buf))
61
+
62
+	suite.Equal(0, suite.buf.Len())
63
+	suite.Equal(record.TypeApplicationData, suite.r.Type)
64
+	suite.Equal(record.Version13, suite.r.Version)
65
+	suite.Equal([]byte{1, 2, 3}, suite.r.Payload.Bytes())
66
+}
67
+
68
+func (suite *RecordTestSuite) TestString() {
69
+	_ = suite.r.String()
70
+}
71
+
72
+func (suite *RecordTestSuite) TestSnapshot() {
73
+	files, err := os.ReadDir("testdata")
74
+	suite.NoError(err)
75
+
76
+	testData := map[string]string{}
77
+
78
+	for _, f := range files {
79
+		testData[f.Name()] = filepath.Join("testdata", f.Name())
80
+	}
81
+
82
+	for name, pathV := range testData {
83
+		path := pathV
84
+
85
+		suite.T().Run(name, func(t *testing.T) {
86
+			data, err := os.ReadFile(path)
87
+			assert.NoError(t, err)
88
+
89
+			snapshot := &RecordTestSnapshot{}
90
+			assert.NoError(t, json.Unmarshal(data, snapshot))
91
+
92
+			rec := record.AcquireRecord()
93
+			defer record.ReleaseRecord(rec)
94
+
95
+			assert.NoError(t, rec.Read(bytes.NewReader(snapshot.RecordBytes())))
96
+			assert.Equal(t, snapshot.Type, int(rec.Type))
97
+			assert.Equal(t, snapshot.Version, int(rec.Version))
98
+			assert.Equal(t, snapshot.PayloadBytes(), rec.Payload.Bytes())
99
+
100
+			buf := &bytes.Buffer{}
101
+			assert.NoError(t, rec.Dump(buf))
102
+			assert.Equal(t, snapshot.RecordBytes(), buf.Bytes())
103
+		})
104
+	}
105
+}
106
+
107
+func TestRecord(t *testing.T) {
108
+	t.Parallel()
109
+	suite.Run(t, &RecordTestSuite{})
110
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/05eb6b71f87b6802.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 20,
3
+  "version": 772,
4
+  "payload": "sxS+0oAyk+NBv0LLVtQOp9WSx4CweyUZPz01tQ0o4oyp8aaBl6/kMFvLq3q52KE8lCiKejLw2NxVBUkE+4izCf2gLx9qfr81opWnqJTChWzcDijvttbq9cmtDFNL+odKsS3v1/TfYEFtPsoRPrJRmOHRAnqnf49Y5Q==",
5
+  "record": "FAMEAHmzFL7SgDKT40G/QstW1A6n1ZLHgLB7JRk/PTW1DSjijKnxpoGXr+QwW8urernYoTyUKIp6MvDY3FUFSQT7iLMJ/aAvH2p+vzWilaeolMKFbNwOKO+21ur1ya0MU0v6h0qxLe/X9N9gQW0+yhE+slGY4dECeqd/j1jl"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/4eef4abc15b206b6.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 22,
3
+  "version": 772,
4
+  "payload": "waNH223htyxCBKAb6hm0u/SK/9mhI8Ck91nfWob7QMOaIREogrDYREJH4Djcp47XrpAlEaUIDiCvoFLVJ/LK1nYs4swzfHSSl/+Aj1eqPA63XqPa8EG4FAbf0DwjwXxV9qVIhvP9b2TafKbzr4Yb5GCygzFRb/zawA==",
5
+  "record": "FgMEAHnBo0fbbeG3LEIEoBvqGbS79Ir/2aEjwKT3Wd9ahvtAw5ohESiCsNhEQkfgONynjteukCURpQgOIK+gUtUn8srWdizizDN8dJKX/4CPV6o8Drdeo9rwQbgUBt/QPCPBfFX2pUiG8/1vZNp8pvOvhhvkYLKDMVFv/NrA"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/736f358216afe91f.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 23,
3
+  "version": 769,
4
+  "payload": "jmJ0o1E5+ehAHHYAbCo4AMV03X7RSivYl250s06nD9CO44fyjaoGELz0N7IeCg1jFKcRVSCRmYYmiIY9wydn2fXOJhKif8B0BlM3qhbethYgyP+l1S8hyyETpIiOtiiiOnAJwl1D1j9OryFiJFSdRRXReIMZ4CPqPg==",
5
+  "record": "FwMBAHmOYnSjUTn56EAcdgBsKjgAxXTdftFKK9iXbnSzTqcP0I7jh/KNqgYQvPQ3sh4KDWMUpxFVIJGZhiaIhj3DJ2fZ9c4mEqJ/wHQGUzeqFt62FiDI/6XVLyHLIROkiI62KKI6cAnCXUPWP06vIWIkVJ1FFdF4gxngI+o+"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/8405d94222bd0b6a.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 22,
3
+  "version": 769,
4
+  "payload": "hBnpBnNUdlqe/rKXa7Judcz79u7AkUgSGOycn8EqvbkZpVxnI31rNOvAsPZqG+GF7DWJ3R7H2ETmFmrpnyyng32MjSs1jptmV1oAs63zTADD7sVipgid9AJHwfl4CrC3FIQr43IPMYd29JPOl5bqu/SfrgI16PBiJw==",
5
+  "record": "FgMBAHmEGekGc1R2Wp7+spdrsm51zPv27sCRSBIY7JyfwSq9uRmlXGcjfWs068Cw9mob4YXsNYndHsfYROYWaumfLKeDfYyNKzWOm2ZXWgCzrfNMAMPuxWKmCJ30AkfB+XgKsLcUhCvjcg8xh3b0k86Xluq79J+uAjXo8GIn"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/9036f76e517f0cd1.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 23,
3
+  "version": 770,
4
+  "payload": "Vm/C+DO56czlbtR915aHzsugSyDtp8CtojF9w1jKY0efyyfcLrNuhNg/pZm3gQ7v2BBbL1UJ97v/RIjST+5gRIfg3bBN1BE9hkf+N2AYY2lHLi0yeInHB0zFWPeHscsDopDFadIi5KtC8HvbEMuK+kK8POVk5tN9UQ==",
5
+  "record": "FwMCAHlWb8L4M7npzOVu1H3XlofOy6BLIO2nwK2iMX3DWMpjR5/LJ9wus26E2D+lmbeBDu/YEFsvVQn3u/9EiNJP7mBEh+DdsE3UET2GR/43YBhjaUcuLTJ4iccHTMVY94exywOikMVp0iLkq0Lwe9sQy4r6Qrw85WTm031R"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/9244766a0fe4a02a.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 22,
3
+  "version": 770,
4
+  "payload": "ajPzpsgk4gwm2stRQKbllvKRLdI7vmyaj1uxEJ/kKoQnQSPumdDNKD618U2Cq6PVd0/b+9YtH67Uzx1QxtpKuby5fUXqw06WUuDAQsmjq7F26EkE5FND6rQUjUPC+e1U0dF4TQzOUSS4IAkFQPAaVehUVTRxVWa/0g==",
5
+  "record": "FgMCAHlqM/OmyCTiDCbay1FApuWW8pEt0ju+bJqPW7EQn+QqhCdBI+6Z0M0oPrXxTYKro9V3T9v71i0frtTPHVDG2kq5vLl9RerDTpZS4MBCyaOrsXboSQTkU0PqtBSNQ8L57VTR0XhNDM5RJLggCQVA8BpV6FRVNHFVZr/S"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/9255c73d3de76e7b.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 20,
3
+  "version": 771,
4
+  "payload": "d1Hiv1NYVgEDR9mtJyv9j8mg3dWqfUpeKfOsL+jzSDfVIxeDiJZFLDT50TjNW44/yEOVEX/Y/pk+wnc7E8aCEiwGwAvB+Insw1UCJ2ejt689VWLo2u4klGVKTHuOpUvdGVTc7Lo4FAt91KQSPLYB5iqxomjEv5e3Vg==",
5
+  "record": "FAMDAHl3UeK/U1hWAQNH2a0nK/2PyaDd1ap9Sl4p86wv6PNIN9UjF4OIlkUsNPnROM1bjj/IQ5URf9j+mT7CdzsTxoISLAbAC8H4iezDVQInZ6O3rz1VYuja7iSUZUpMe46lS90ZVNzsujgUC33UpBI8tgHmKrGiaMS/l7dW"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/aeb65b9924315cf8.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 23,
3
+  "version": 771,
4
+  "payload": "wbdU1CbrzuAJDsh6CFjGyE+AFArJj/Wmsa2wtDyW0kRuE2vUO8gg+nXkg0kkoz0WnvQEOdaswfJIaVrloD78yoyeQVfBB+VUP/63vqn60v5ccaQEn0jLdxgLjiTAxKDQDxCTMRoLnFE2ZZf28zw+HfqpIxiOZs8LhQ==",
5
+  "record": "FwMDAHnBt1TUJuvO4AkOyHoIWMbIT4AUCsmP9aaxrbC0PJbSRG4Ta9Q7yCD6deSDSSSjPRae9AQ51qzB8khpWuWgPvzKjJ5BV8EH5VQ//re+qfrS/lxxpASfSMt3GAuOJMDEoNAPEJMxGgucUTZll/bzPD4d+qkjGI5mzwuF"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/b0acd44296056b54.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 23,
3
+  "version": 772,
4
+  "payload": "qqnBMb1Af3zZt4DPHpVRuIiON9ODGJUNFicFjranORh67L/HI4D6HnHyycZFUSBOw2FjMBF6UialY8snOYaRKrQmQzuUNg1Ztq7yAZ+Lgj3TBarR6OMlYhEAY0Px9Xv1UuJ0YcvQx33gdM1skJ5HBR3yZvEKNJV1LA==",
5
+  "record": "FwMEAHmqqcExvUB/fNm3gM8elVG4iI4304MYlQ0WJwWOtqc5GHrsv8cjgPoecfLJxkVRIE7DYWMwEXpSJqVjyyc5hpEqtCZDO5Q2DVm2rvIBn4uCPdMFqtHo4yViEQBjQ/H1e/VS4nRhy9DHfeB0zWyQnkcFHfJm8Qo0lXUs"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/c0545a13fd9a3fa3.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 20,
3
+  "version": 769,
4
+  "payload": "NEe735TuQFp7bWpFQhASas/e1XaySvus0ovXmkfCbFq334MyFHq2eDMadziXsfu/GfBjoYggvk0LgYUeoAkBNKR0dfSovjSndaqmIUonoWl+6sZObiGZkRIMwuY2q4Eaw4/iuDu/pZhjRW/iAIH+YH7cyk/1tgdJDg==",
5
+  "record": "FAMBAHk0R7vflO5AWnttakVCEBJqz97VdrJK+6zSi9eaR8JsWrffgzIUerZ4Mxp3OJex+78Z8GOhiCC+TQuBhR6gCQE0pHR19Ki+NKd1qqYhSiehaX7qxk5uIZmREgzC5jargRrDj+K4O7+lmGNFb+IAgf5gftzKT/W2B0kO"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/f083f4501668b759.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 22,
3
+  "version": 771,
4
+  "payload": "wrXjZrPm3OSyzO0klv6/G+z2PDloR/colS/RlWwQE31Vb2xm8YkEchDDKwlc/KPLD73qMoz3MQOQLtSLc8LhVYp+l7L9jz49yTaVKtBI5UuGbo09snsKxFCgCyYUBETKabATBQtiaEu/D8dmF4Yk/2ww4sEb8DwKLQ==",
5
+  "record": "FgMDAHnCteNms+bc5LLM7SSW/r8b7PY8OWhH9yiVL9GVbBATfVVvbGbxiQRyEMMrCVz8o8sPveoyjPcxA5Au1ItzwuFVin6Xsv2PPj3JNpUq0EjlS4ZujT2yewrEUKALJhQERMppsBMFC2JoS78Px2YXhiT/bDDiwRvwPAot"
6
+}

+ 6
- 0
mtglib/internal/faketls/record/testdata/f5696bcdffd11706.json View File

@@ -0,0 +1,6 @@
1
+{
2
+  "type": 20,
3
+  "version": 770,
4
+  "payload": "OU5s8Sa11hpXWEarWzFlX55IZt3Eo+F4AMbQ/2RwB4rfHS/JNl8n63OR4oYs9QXw3RfCrYJuU9n6Xn+I/+7ZzAgZ0PbLSXW1PrLtttdfmhTErK90b49YEWdY9na4g++NMkKykwgXvY1hNxZIHX/qawEWJgxXUR3DdQ==",
5
+  "record": "FAMCAHk5TmzxJrXWGldYRqtbMWVfnkhm3cSj4XgAxtD/ZHAHit8dL8k2Xyfrc5Hihiz1BfDdF8Ktgm5T2fpef4j/7tnMCBnQ9stJdbU+su2211+aFMSsr3Rvj1gRZ1j2driD740yQrKTCBe9jWE3Fkgdf+prARYmDFdRHcN1"
6
+}

Loading…
Cancel
Save