From 64754d1039636d27f8ac3dbd5f5ea7065b540898 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Tue, 30 Mar 2021 17:46:08 +0300 Subject: [PATCH] Add tests for faketls record --- mtglib/internal/faketls/record/record_test.go | 110 ++++++++++++++++++ .../record/testdata/05eb6b71f87b6802.json | 6 + .../record/testdata/4eef4abc15b206b6.json | 6 + .../record/testdata/736f358216afe91f.json | 6 + .../record/testdata/8405d94222bd0b6a.json | 6 + .../record/testdata/9036f76e517f0cd1.json | 6 + .../record/testdata/9244766a0fe4a02a.json | 6 + .../record/testdata/9255c73d3de76e7b.json | 6 + .../record/testdata/aeb65b9924315cf8.json | 6 + .../record/testdata/b0acd44296056b54.json | 6 + .../record/testdata/c0545a13fd9a3fa3.json | 6 + .../record/testdata/f083f4501668b759.json | 6 + .../record/testdata/f5696bcdffd11706.json | 6 + 13 files changed, 182 insertions(+) create mode 100644 mtglib/internal/faketls/record/record_test.go create mode 100644 mtglib/internal/faketls/record/testdata/05eb6b71f87b6802.json create mode 100644 mtglib/internal/faketls/record/testdata/4eef4abc15b206b6.json create mode 100644 mtglib/internal/faketls/record/testdata/736f358216afe91f.json create mode 100644 mtglib/internal/faketls/record/testdata/8405d94222bd0b6a.json create mode 100644 mtglib/internal/faketls/record/testdata/9036f76e517f0cd1.json create mode 100644 mtglib/internal/faketls/record/testdata/9244766a0fe4a02a.json create mode 100644 mtglib/internal/faketls/record/testdata/9255c73d3de76e7b.json create mode 100644 mtglib/internal/faketls/record/testdata/aeb65b9924315cf8.json create mode 100644 mtglib/internal/faketls/record/testdata/b0acd44296056b54.json create mode 100644 mtglib/internal/faketls/record/testdata/c0545a13fd9a3fa3.json create mode 100644 mtglib/internal/faketls/record/testdata/f083f4501668b759.json create mode 100644 mtglib/internal/faketls/record/testdata/f5696bcdffd11706.json diff --git a/mtglib/internal/faketls/record/record_test.go b/mtglib/internal/faketls/record/record_test.go new file mode 100644 index 0000000..e29b5ba --- /dev/null +++ b/mtglib/internal/faketls/record/record_test.go @@ -0,0 +1,110 @@ +package record_test + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "os" + "path/filepath" + "testing" + + "github.com/9seconds/mtg/v2/mtglib/internal/faketls/record" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" +) + +type RecordTestSnapshot struct { + Type int `json:"type"` + Version int `json:"version"` + Payload string `json:"payload"` + Record string `json:"record"` +} + +func (r RecordTestSnapshot) RecordBytes() []byte { + data, _ := base64.StdEncoding.DecodeString(r.Record) + + return data +} + +func (r RecordTestSnapshot) PayloadBytes() []byte { + data, _ := base64.StdEncoding.DecodeString(r.Payload) + + return data +} + +type RecordTestSuite struct { + suite.Suite + + r *record.Record + buf *bytes.Buffer +} + +func (suite *RecordTestSuite) SetupTest() { + suite.r = record.AcquireRecord() + suite.buf = &bytes.Buffer{} +} + +func (suite *RecordTestSuite) TearDownTest() { + record.ReleaseRecord(suite.r) + suite.buf.Reset() +} + +func (suite *RecordTestSuite) TestIdempotent() { + suite.r.Type = record.TypeApplicationData + suite.r.Version = record.Version13 + + suite.r.Payload.Write([]byte{1, 2, 3}) + suite.NoError(suite.r.Dump(suite.buf)) + + suite.r.Reset() + suite.NoError(suite.r.Read(suite.buf)) + + suite.Equal(0, suite.buf.Len()) + suite.Equal(record.TypeApplicationData, suite.r.Type) + suite.Equal(record.Version13, suite.r.Version) + suite.Equal([]byte{1, 2, 3}, suite.r.Payload.Bytes()) +} + +func (suite *RecordTestSuite) TestString() { + _ = suite.r.String() +} + +func (suite *RecordTestSuite) TestSnapshot() { + files, err := os.ReadDir("testdata") + suite.NoError(err) + + testData := map[string]string{} + + for _, f := range files { + testData[f.Name()] = filepath.Join("testdata", f.Name()) + } + + for name, pathV := range testData { + path := pathV + + suite.T().Run(name, func(t *testing.T) { + data, err := os.ReadFile(path) + assert.NoError(t, err) + + snapshot := &RecordTestSnapshot{} + assert.NoError(t, json.Unmarshal(data, snapshot)) + + rec := record.AcquireRecord() + defer record.ReleaseRecord(rec) + + assert.NoError(t, rec.Read(bytes.NewReader(snapshot.RecordBytes()))) + assert.Equal(t, snapshot.Type, int(rec.Type)) + assert.Equal(t, snapshot.Version, int(rec.Version)) + assert.Equal(t, snapshot.PayloadBytes(), rec.Payload.Bytes()) + + buf := &bytes.Buffer{} + assert.NoError(t, rec.Dump(buf)) + assert.Equal(t, snapshot.RecordBytes(), buf.Bytes()) + }) + } +} + +func TestRecord(t *testing.T) { + t.Parallel() + suite.Run(t, &RecordTestSuite{}) +} diff --git a/mtglib/internal/faketls/record/testdata/05eb6b71f87b6802.json b/mtglib/internal/faketls/record/testdata/05eb6b71f87b6802.json new file mode 100644 index 0000000..6cac5ae --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/05eb6b71f87b6802.json @@ -0,0 +1,6 @@ +{ + "type": 20, + "version": 772, + "payload": "sxS+0oAyk+NBv0LLVtQOp9WSx4CweyUZPz01tQ0o4oyp8aaBl6/kMFvLq3q52KE8lCiKejLw2NxVBUkE+4izCf2gLx9qfr81opWnqJTChWzcDijvttbq9cmtDFNL+odKsS3v1/TfYEFtPsoRPrJRmOHRAnqnf49Y5Q==", + "record": "FAMEAHmzFL7SgDKT40G/QstW1A6n1ZLHgLB7JRk/PTW1DSjijKnxpoGXr+QwW8urernYoTyUKIp6MvDY3FUFSQT7iLMJ/aAvH2p+vzWilaeolMKFbNwOKO+21ur1ya0MU0v6h0qxLe/X9N9gQW0+yhE+slGY4dECeqd/j1jl" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/4eef4abc15b206b6.json b/mtglib/internal/faketls/record/testdata/4eef4abc15b206b6.json new file mode 100644 index 0000000..875d64f --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/4eef4abc15b206b6.json @@ -0,0 +1,6 @@ +{ + "type": 22, + "version": 772, + "payload": "waNH223htyxCBKAb6hm0u/SK/9mhI8Ck91nfWob7QMOaIREogrDYREJH4Djcp47XrpAlEaUIDiCvoFLVJ/LK1nYs4swzfHSSl/+Aj1eqPA63XqPa8EG4FAbf0DwjwXxV9qVIhvP9b2TafKbzr4Yb5GCygzFRb/zawA==", + "record": "FgMEAHnBo0fbbeG3LEIEoBvqGbS79Ir/2aEjwKT3Wd9ahvtAw5ohESiCsNhEQkfgONynjteukCURpQgOIK+gUtUn8srWdizizDN8dJKX/4CPV6o8Drdeo9rwQbgUBt/QPCPBfFX2pUiG8/1vZNp8pvOvhhvkYLKDMVFv/NrA" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/736f358216afe91f.json b/mtglib/internal/faketls/record/testdata/736f358216afe91f.json new file mode 100644 index 0000000..5b322d4 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/736f358216afe91f.json @@ -0,0 +1,6 @@ +{ + "type": 23, + "version": 769, + "payload": "jmJ0o1E5+ehAHHYAbCo4AMV03X7RSivYl250s06nD9CO44fyjaoGELz0N7IeCg1jFKcRVSCRmYYmiIY9wydn2fXOJhKif8B0BlM3qhbethYgyP+l1S8hyyETpIiOtiiiOnAJwl1D1j9OryFiJFSdRRXReIMZ4CPqPg==", + "record": "FwMBAHmOYnSjUTn56EAcdgBsKjgAxXTdftFKK9iXbnSzTqcP0I7jh/KNqgYQvPQ3sh4KDWMUpxFVIJGZhiaIhj3DJ2fZ9c4mEqJ/wHQGUzeqFt62FiDI/6XVLyHLIROkiI62KKI6cAnCXUPWP06vIWIkVJ1FFdF4gxngI+o+" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/8405d94222bd0b6a.json b/mtglib/internal/faketls/record/testdata/8405d94222bd0b6a.json new file mode 100644 index 0000000..16a4ba7 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/8405d94222bd0b6a.json @@ -0,0 +1,6 @@ +{ + "type": 22, + "version": 769, + "payload": "hBnpBnNUdlqe/rKXa7Judcz79u7AkUgSGOycn8EqvbkZpVxnI31rNOvAsPZqG+GF7DWJ3R7H2ETmFmrpnyyng32MjSs1jptmV1oAs63zTADD7sVipgid9AJHwfl4CrC3FIQr43IPMYd29JPOl5bqu/SfrgI16PBiJw==", + "record": "FgMBAHmEGekGc1R2Wp7+spdrsm51zPv27sCRSBIY7JyfwSq9uRmlXGcjfWs068Cw9mob4YXsNYndHsfYROYWaumfLKeDfYyNKzWOm2ZXWgCzrfNMAMPuxWKmCJ30AkfB+XgKsLcUhCvjcg8xh3b0k86Xluq79J+uAjXo8GIn" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/9036f76e517f0cd1.json b/mtglib/internal/faketls/record/testdata/9036f76e517f0cd1.json new file mode 100644 index 0000000..5d60155 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/9036f76e517f0cd1.json @@ -0,0 +1,6 @@ +{ + "type": 23, + "version": 770, + "payload": "Vm/C+DO56czlbtR915aHzsugSyDtp8CtojF9w1jKY0efyyfcLrNuhNg/pZm3gQ7v2BBbL1UJ97v/RIjST+5gRIfg3bBN1BE9hkf+N2AYY2lHLi0yeInHB0zFWPeHscsDopDFadIi5KtC8HvbEMuK+kK8POVk5tN9UQ==", + "record": "FwMCAHlWb8L4M7npzOVu1H3XlofOy6BLIO2nwK2iMX3DWMpjR5/LJ9wus26E2D+lmbeBDu/YEFsvVQn3u/9EiNJP7mBEh+DdsE3UET2GR/43YBhjaUcuLTJ4iccHTMVY94exywOikMVp0iLkq0Lwe9sQy4r6Qrw85WTm031R" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/9244766a0fe4a02a.json b/mtglib/internal/faketls/record/testdata/9244766a0fe4a02a.json new file mode 100644 index 0000000..459986b --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/9244766a0fe4a02a.json @@ -0,0 +1,6 @@ +{ + "type": 22, + "version": 770, + "payload": "ajPzpsgk4gwm2stRQKbllvKRLdI7vmyaj1uxEJ/kKoQnQSPumdDNKD618U2Cq6PVd0/b+9YtH67Uzx1QxtpKuby5fUXqw06WUuDAQsmjq7F26EkE5FND6rQUjUPC+e1U0dF4TQzOUSS4IAkFQPAaVehUVTRxVWa/0g==", + "record": "FgMCAHlqM/OmyCTiDCbay1FApuWW8pEt0ju+bJqPW7EQn+QqhCdBI+6Z0M0oPrXxTYKro9V3T9v71i0frtTPHVDG2kq5vLl9RerDTpZS4MBCyaOrsXboSQTkU0PqtBSNQ8L57VTR0XhNDM5RJLggCQVA8BpV6FRVNHFVZr/S" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/9255c73d3de76e7b.json b/mtglib/internal/faketls/record/testdata/9255c73d3de76e7b.json new file mode 100644 index 0000000..e49ea0a --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/9255c73d3de76e7b.json @@ -0,0 +1,6 @@ +{ + "type": 20, + "version": 771, + "payload": "d1Hiv1NYVgEDR9mtJyv9j8mg3dWqfUpeKfOsL+jzSDfVIxeDiJZFLDT50TjNW44/yEOVEX/Y/pk+wnc7E8aCEiwGwAvB+Insw1UCJ2ejt689VWLo2u4klGVKTHuOpUvdGVTc7Lo4FAt91KQSPLYB5iqxomjEv5e3Vg==", + "record": "FAMDAHl3UeK/U1hWAQNH2a0nK/2PyaDd1ap9Sl4p86wv6PNIN9UjF4OIlkUsNPnROM1bjj/IQ5URf9j+mT7CdzsTxoISLAbAC8H4iezDVQInZ6O3rz1VYuja7iSUZUpMe46lS90ZVNzsujgUC33UpBI8tgHmKrGiaMS/l7dW" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/aeb65b9924315cf8.json b/mtglib/internal/faketls/record/testdata/aeb65b9924315cf8.json new file mode 100644 index 0000000..7eac0da --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/aeb65b9924315cf8.json @@ -0,0 +1,6 @@ +{ + "type": 23, + "version": 771, + "payload": "wbdU1CbrzuAJDsh6CFjGyE+AFArJj/Wmsa2wtDyW0kRuE2vUO8gg+nXkg0kkoz0WnvQEOdaswfJIaVrloD78yoyeQVfBB+VUP/63vqn60v5ccaQEn0jLdxgLjiTAxKDQDxCTMRoLnFE2ZZf28zw+HfqpIxiOZs8LhQ==", + "record": "FwMDAHnBt1TUJuvO4AkOyHoIWMbIT4AUCsmP9aaxrbC0PJbSRG4Ta9Q7yCD6deSDSSSjPRae9AQ51qzB8khpWuWgPvzKjJ5BV8EH5VQ//re+qfrS/lxxpASfSMt3GAuOJMDEoNAPEJMxGgucUTZll/bzPD4d+qkjGI5mzwuF" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/b0acd44296056b54.json b/mtglib/internal/faketls/record/testdata/b0acd44296056b54.json new file mode 100644 index 0000000..3fffda7 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/b0acd44296056b54.json @@ -0,0 +1,6 @@ +{ + "type": 23, + "version": 772, + "payload": "qqnBMb1Af3zZt4DPHpVRuIiON9ODGJUNFicFjranORh67L/HI4D6HnHyycZFUSBOw2FjMBF6UialY8snOYaRKrQmQzuUNg1Ztq7yAZ+Lgj3TBarR6OMlYhEAY0Px9Xv1UuJ0YcvQx33gdM1skJ5HBR3yZvEKNJV1LA==", + "record": "FwMEAHmqqcExvUB/fNm3gM8elVG4iI4304MYlQ0WJwWOtqc5GHrsv8cjgPoecfLJxkVRIE7DYWMwEXpSJqVjyyc5hpEqtCZDO5Q2DVm2rvIBn4uCPdMFqtHo4yViEQBjQ/H1e/VS4nRhy9DHfeB0zWyQnkcFHfJm8Qo0lXUs" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/c0545a13fd9a3fa3.json b/mtglib/internal/faketls/record/testdata/c0545a13fd9a3fa3.json new file mode 100644 index 0000000..aa11362 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/c0545a13fd9a3fa3.json @@ -0,0 +1,6 @@ +{ + "type": 20, + "version": 769, + "payload": "NEe735TuQFp7bWpFQhASas/e1XaySvus0ovXmkfCbFq334MyFHq2eDMadziXsfu/GfBjoYggvk0LgYUeoAkBNKR0dfSovjSndaqmIUonoWl+6sZObiGZkRIMwuY2q4Eaw4/iuDu/pZhjRW/iAIH+YH7cyk/1tgdJDg==", + "record": "FAMBAHk0R7vflO5AWnttakVCEBJqz97VdrJK+6zSi9eaR8JsWrffgzIUerZ4Mxp3OJex+78Z8GOhiCC+TQuBhR6gCQE0pHR19Ki+NKd1qqYhSiehaX7qxk5uIZmREgzC5jargRrDj+K4O7+lmGNFb+IAgf5gftzKT/W2B0kO" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/f083f4501668b759.json b/mtglib/internal/faketls/record/testdata/f083f4501668b759.json new file mode 100644 index 0000000..2518193 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/f083f4501668b759.json @@ -0,0 +1,6 @@ +{ + "type": 22, + "version": 771, + "payload": "wrXjZrPm3OSyzO0klv6/G+z2PDloR/colS/RlWwQE31Vb2xm8YkEchDDKwlc/KPLD73qMoz3MQOQLtSLc8LhVYp+l7L9jz49yTaVKtBI5UuGbo09snsKxFCgCyYUBETKabATBQtiaEu/D8dmF4Yk/2ww4sEb8DwKLQ==", + "record": "FgMDAHnCteNms+bc5LLM7SSW/r8b7PY8OWhH9yiVL9GVbBATfVVvbGbxiQRyEMMrCVz8o8sPveoyjPcxA5Au1ItzwuFVin6Xsv2PPj3JNpUq0EjlS4ZujT2yewrEUKALJhQERMppsBMFC2JoS78Px2YXhiT/bDDiwRvwPAot" +} \ No newline at end of file diff --git a/mtglib/internal/faketls/record/testdata/f5696bcdffd11706.json b/mtglib/internal/faketls/record/testdata/f5696bcdffd11706.json new file mode 100644 index 0000000..055a7a6 --- /dev/null +++ b/mtglib/internal/faketls/record/testdata/f5696bcdffd11706.json @@ -0,0 +1,6 @@ +{ + "type": 20, + "version": 770, + "payload": "OU5s8Sa11hpXWEarWzFlX55IZt3Eo+F4AMbQ/2RwB4rfHS/JNl8n63OR4oYs9QXw3RfCrYJuU9n6Xn+I/+7ZzAgZ0PbLSXW1PrLtttdfmhTErK90b49YEWdY9na4g++NMkKykwgXvY1hNxZIHX/qawEWJgxXUR3DdQ==", + "record": "FAMCAHk5TmzxJrXWGldYRqtbMWVfnkhm3cSj4XgAxtD/ZHAHit8dL8k2Xyfrc5Hihiz1BfDdF8Ktgm5T2fpef4j/7tnMCBnQ9stJdbU+su2211+aFMSsr3Rvj1gRZ1j2driD740yQrKTCBe9jWE3Fkgdf+prARYmDFdRHcN1" +} \ No newline at end of file