mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 02:24:03 +03:00
FILE / ScuroNeko/mtg
mtglib/internal/obfuscation/obfuscator_fuzz_test.go
Исходный файл и его история в репозитории.
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package obfuscation_test
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"github.com/9seconds/mtg/v2/internal/testlib"
|
|
"github.com/9seconds/mtg/v2/mtglib"
|
|
"github.com/9seconds/mtg/v2/mtglib/internal/obfuscation"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
func FuzzClientServerHandshakes(f *testing.F) {
|
|
f.Add(int16(1), make([]byte, mtglib.SecretKeyLength))
|
|
|
|
f.Fuzz(func(t *testing.T, dc int16, data []byte) {
|
|
if dc <= 0 {
|
|
dc = 1
|
|
}
|
|
|
|
client := obfuscation.Obfuscator{
|
|
Secret: data,
|
|
}
|
|
server := client
|
|
|
|
clientToServerBuf := &bytes.Buffer{}
|
|
|
|
writeConnMock := &testlib.EssentialsConnMock{}
|
|
writeConnMock.
|
|
On("Write", mock.AnythingOfType("[]uint8")).
|
|
Once().
|
|
Return(64, nil).
|
|
Run(func(args mock.Arguments) {
|
|
arg := args.Get(0).([]byte)
|
|
n, err := clientToServerBuf.Write(arg)
|
|
assert.Equal(t, 64, n)
|
|
assert.NoError(t, err)
|
|
})
|
|
|
|
readConnMock := &testlib.EssentialsConnMock{}
|
|
readConnMock.
|
|
On("Read", mock.AnythingOfType("[]uint8")).
|
|
Once().
|
|
Return(64, nil).
|
|
Run(func(args mock.Arguments) {
|
|
arg := args.Get(0).([]byte)
|
|
n, err := clientToServerBuf.Read(arg)
|
|
assert.Equal(t, 64, n)
|
|
assert.NoError(t, err)
|
|
})
|
|
|
|
_, err := client.SendHandshake(writeConnMock, int(dc))
|
|
assert.NoError(t, err)
|
|
|
|
readDc, _, err := server.ReadHandshake(readConnMock)
|
|
assert.NoError(t, err)
|
|
assert.EqualValues(t, dc, readDc)
|
|
|
|
writeConnMock.AssertExpectations(t)
|
|
readConnMock.AssertExpectations(t)
|
|
})
|
|
}
|