FILE / ScuroNeko/mtg

mtglib/secret_test.go

Исходный файл и его история в репозитории.
FILE c0ab254acf37e25816ae1186686a0093c78528b2
Files
mtg/mtglib/secret_test.go
T
2021-03-11 21:50:47 +03:00

106 lines
2.4 KiB
Go

package mtglib_test
import (
"encoding/hex"
"encoding/json"
"testing"
"github.com/9seconds/mtg/v2/mtglib"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
type SecretTestSuite struct {
suite.Suite
}
func (suite *SecretTestSuite) TestParseSecret() {
secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
s := mtglib.Secret{
Host: "google.com",
}
copy(s.Key[:], secretData)
testData := map[string]string{
"hex": "eed11c6cbbd9efe7fed5bc0db220b09665676f6f676c652e636f6d",
"base64": "7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t",
}
for name, value := range testData {
param := value
suite.T().Run(name, func(t *testing.T) {
parsed, err := mtglib.ParseSecret(param)
assert.NoError(t, err)
assert.Equal(t, s.Key, parsed.Key)
assert.Equal(t, s.Host, parsed.Host)
newSecret := mtglib.Secret{}
assert.NoError(t, newSecret.UnmarshalText([]byte(param)))
assert.Equal(t, s.Key, newSecret.Key)
assert.Equal(t, s.Host, newSecret.Host)
})
}
}
func (suite *SecretTestSuite) TestSerialize() {
secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
s := mtglib.Secret{
Host: "google.com",
}
copy(s.Key[:], secretData)
suite.Equal("eed11c6cbbd9efe7fed5bc0db220b09665676f6f676c652e636f6d", s.Hex())
suite.Equal("7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t", s.Base64())
}
func (suite *SecretTestSuite) TestMarshalData() {
secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
s := mtglib.Secret{
Host: "google.com",
}
copy(s.Key[:], secretData)
data, err := json.Marshal(&s)
suite.NoError(err)
suite.Equal(string(data), `"7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t"`)
}
func (suite *SecretTestSuite) TestIncorrectSecret() {
testData := []string{
"aaa",
"d11c6cbbd9efe7fed5bc0db220b09665",
"ddd11c6cbbd9efe7fed5bc0db220b09665",
"+ueJ0q91t5XOnFYP8Xac3A",
"eed11c6cbbd9efe7fed5bc0db220b09665",
"ed11c6cbbd9efe7fed5bc0db220b09665",
}
for _, v := range testData {
param := v
suite.T().Run(param, func(t *testing.T) {
_, err := mtglib.ParseSecret(param)
assert.Error(t, err)
})
}
}
func (suite *SecretTestSuite) TestInvariant() {
generated := mtglib.GenerateSecret("google.com")
parsed, err := mtglib.ParseSecret(generated.Hex())
suite.NoError(err)
suite.Equal(generated.Key, parsed.Key)
suite.Equal(generated.Host, parsed.Host)
suite.Equal("google.com", parsed.Host)
}
func TestSecret(t *testing.T) {
t.Parallel()
suite.Run(t, &SecretTestSuite{})
}