140 lines
4.3 KiB
Go
140 lines
4.3 KiB
Go
package i2np
|
|
|
|
import (
|
|
"github.com/go-i2p/go-i2p/lib/common"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestReadI2NPTypeWithNoData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
mtype, err := ReadI2NPType([]byte{})
|
|
assert.Equal(0, mtype)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPTypeWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
mtype, err := ReadI2NPType([]byte{0x01})
|
|
assert.Equal(1, mtype)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageIDWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
mid, err := ReadI2NPNTCPMessageID([]byte{0x00, 0x00, 0x00, 0x00})
|
|
assert.Equal(0, mid)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageIDWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
mid, err := ReadI2NPNTCPMessageID([]byte{0x01, 0x00, 0x00, 0x00, 0x01})
|
|
assert.Equal(1, mid)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageExpirationWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
date, err := ReadI2NPNTCPMessageExpiration([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
|
assert.Equal(common.Date{}, date)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageExpirationWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
date, err := ReadI2NPNTCPMessageExpiration([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00})
|
|
assert.Equal(int64(86400), date.Time().Unix())
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPSSUMessageExpirationWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
date, err := ReadI2NPSSUMessageExpiration([]byte{0x00, 0x00, 0x00, 0x00})
|
|
assert.Equal(common.Date{}, date)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPSSUMessageExpirationWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
date, err := ReadI2NPSSUMessageExpiration([]byte{0x01, 0x05, 0x26, 0x5c, 0x00})
|
|
assert.Equal(int64(86400), date.Time().Unix())
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageSizeWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
size, err := ReadI2NPNTCPMessageSize([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
|
assert.Equal(0, size)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageSizeWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
size, err := ReadI2NPNTCPMessageSize([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00, 0x00, 0x01})
|
|
assert.Equal(1, size)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageChecksumWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
checksum, err := ReadI2NPNTCPMessageChecksum([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
|
assert.Equal(0, checksum)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPMessageChecksumWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
checksum, err := ReadI2NPNTCPMessageChecksum([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00, 0x00, 0x01, 0x01})
|
|
assert.Equal(1, checksum)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPDataWithNoData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data, err := ReadI2NPNTCPData([]byte{}, 3)
|
|
assert.Equal([]byte{}, data)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPDataWithMissingData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data, err := ReadI2NPNTCPData([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00, 0x00, 0x03, 0x01, 0x01, 0x02}, 3)
|
|
assert.Equal([]byte{}, data)
|
|
assert.Equal(ERR_I2NP_NOT_ENOUGH_DATA, err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPDataWithExtraData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data, err := ReadI2NPNTCPData([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00, 0x00, 0x03, 0x01, 0x01, 0x02, 0x03, 0x04}, 3)
|
|
assert.Equal([]byte{0x01, 0x02, 0x03}, data)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestReadI2NPNTCPDataWithValidData(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
data, err := ReadI2NPNTCPData([]byte{0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x26, 0x5c, 0x00, 0x00, 0x03, 0x01, 0x01, 0x02, 0x03}, 3)
|
|
assert.Equal([]byte{0x01, 0x02, 0x03}, data)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestCrasherRegression123781(t *testing.T) {
|
|
ReadI2NPNTCPHeader([]byte{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x30})
|
|
}
|