status-go/server/pairing/config_test.go

94 lines
2.7 KiB
Go

package pairing
import (
"regexp"
"testing"
"github.com/stretchr/testify/suite"
"gopkg.in/go-playground/validator.v9"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/status-im/status-go/protocol/requests"
)
func TestConfigTestSuite(t *testing.T) {
suite.Run(t, new(ConfigTestSuite))
}
type ConfigTestSuite struct {
suite.Suite
validate *validator.Validate
}
func (s *ConfigTestSuite) SetupTest() {
var err error
s.validate, err = newValidate()
require.NoError(s.T(), err, "newValidate should not return error")
}
func (s *ConfigTestSuite) TestValidationKeystorePath() {
s.T().Run("Valid keystore path with keyUID", func(t *testing.T) {
sc := &SenderConfig{
KeystorePath: "some/path/0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
DeviceType: "phone",
KeyUID: "0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
Password: "password",
}
assert.NoError(t, s.validate.Struct(sc), "SenderConfig validation should pass")
})
s.T().Run("Invalid keystore path without keyUID", func(t *testing.T) {
sc := &SenderConfig{
KeystorePath: "some/path/",
DeviceType: "phone",
KeyUID: "0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
Password: "password",
}
assert.Error(t, s.validate.Struct(sc), "SenderConfig validation should fail")
})
}
func (s *ConfigTestSuite) TestValidationKeyUID() {
s.T().Run("Valid keyUID", func(t *testing.T) {
sc := &SenderConfig{
KeystorePath: "some/path/0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
DeviceType: "phone",
KeyUID: "0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
Password: "password",
}
assert.NoError(t, s.validate.Struct(sc), "SenderConfig validation should pass")
})
s.T().Run("Invalid keyUID", func(t *testing.T) {
sc := &SenderConfig{
KeystorePath: "some/path/0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54e",
DeviceType: "phone",
KeyUID: "0x130cc0ebdaecd220c1d6dea0ef01d575ef5364506785745049eb98ddf49cb54",
Password: "password",
}
assert.Error(t, s.validate.Struct(sc), "SenderConfig validation should fail")
})
}
func (s *ConfigTestSuite) TestValidationNotEndKeyUID() {
keyUIDPattern := regexp.MustCompile(`^0x[0-9a-fA-F]{64}$`)
r := &ReceiverConfig{
CreateAccount: &requests.CreateAccount{
RootDataDir: "/tmp",
KdfIterations: 1,
DeviceName: "device-1",
},
}
keystorePath := r.AbsoluteKeystorePath()
s.Require().True(len(keystorePath) <= 66 || !keyUIDPattern.MatchString(keystorePath[len(keystorePath)-66:]))
s.Require().NoError(validateReceiverConfig(r, r), "ReceiverConfig validation should pass")
}