mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 16:24:03 +03:00
Add new obfuscation package
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
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)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user