mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 11:34:01 +03:00
Add tests for prefer ip config type
This commit is contained in:
+3
-3
@@ -29,11 +29,11 @@ func (c *TypeIP) MarshalText() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c TypeIP) String() string {
|
func (c TypeIP) String() string {
|
||||||
if c.value == nil {
|
if len(c.value) > 0 {
|
||||||
return ""
|
return c.value.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.value.String()
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c TypeIP) Value(defaultValue net.IP) net.IP {
|
func (c TypeIP) Value(defaultValue net.IP) net.IP {
|
||||||
|
|||||||
@@ -5,6 +5,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TypePreferIPPreferIPv4 = "prefer-ipv4"
|
||||||
|
TypePreferIPPreferIPv6 = "prefer-ipv6"
|
||||||
|
TypePreferOnlyIPv4 = "only-ipv4"
|
||||||
|
TypePreferOnlyIPv6 = "only-ipv6"
|
||||||
|
)
|
||||||
|
|
||||||
type TypePreferIP struct {
|
type TypePreferIP struct {
|
||||||
value string
|
value string
|
||||||
}
|
}
|
||||||
@@ -17,7 +24,7 @@ func (c *TypePreferIP) UnmarshalText(data []byte) error {
|
|||||||
text := strings.ToLower(string(data))
|
text := strings.ToLower(string(data))
|
||||||
|
|
||||||
switch text {
|
switch text {
|
||||||
case "prefer-ipv4", "prefer-ipv6", "only-ipv4", "only-ipv6":
|
case TypePreferIPPreferIPv4, TypePreferIPPreferIPv6, TypePreferOnlyIPv4, TypePreferOnlyIPv6:
|
||||||
c.value = text
|
c.value = text
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("incorrect prefer-ip value: %s", string(data))
|
return fmt.Errorf("incorrect prefer-ip value: %s", string(data))
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
package config_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/9seconds/mtg/v2/config"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
)
|
||||||
|
|
||||||
|
type typePreferIPTestStruct struct {
|
||||||
|
Value config.TypePreferIP `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TypePreferIPTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *TypePreferIPTestSuite) TestUnmarshalFail() {
|
||||||
|
testData := []string{
|
||||||
|
"p",
|
||||||
|
"ipv4",
|
||||||
|
"onlyipv4",
|
||||||
|
"ipv6prefer",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range testData {
|
||||||
|
data, err := json.Marshal(map[string]string{
|
||||||
|
"value": v,
|
||||||
|
})
|
||||||
|
suite.NoError(err)
|
||||||
|
|
||||||
|
suite.T().Run(v, func(t *testing.T) {
|
||||||
|
assert.Error(t, json.Unmarshal(data, &typePreferIPTestStruct{}))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *TypePreferIPTestSuite) TestUnmarshalOk() {
|
||||||
|
testData := []string{
|
||||||
|
config.TypePreferIPPreferIPv4,
|
||||||
|
config.TypePreferIPPreferIPv6,
|
||||||
|
config.TypePreferOnlyIPv4,
|
||||||
|
config.TypePreferOnlyIPv6,
|
||||||
|
strings.ToUpper(config.TypePreferIPPreferIPv4),
|
||||||
|
strings.ToUpper(config.TypePreferIPPreferIPv6),
|
||||||
|
strings.ToUpper(config.TypePreferOnlyIPv4),
|
||||||
|
strings.ToUpper(config.TypePreferOnlyIPv6),
|
||||||
|
strings.ToLower(config.TypePreferIPPreferIPv4),
|
||||||
|
strings.ToLower(config.TypePreferIPPreferIPv6),
|
||||||
|
strings.ToLower(config.TypePreferOnlyIPv4),
|
||||||
|
strings.ToLower(config.TypePreferOnlyIPv6),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range testData {
|
||||||
|
value := v
|
||||||
|
|
||||||
|
data, err := json.Marshal(map[string]string{
|
||||||
|
"value": v,
|
||||||
|
})
|
||||||
|
suite.NoError(err)
|
||||||
|
|
||||||
|
suite.T().Run(v, func(t *testing.T) {
|
||||||
|
testStruct := &typePreferIPTestStruct{}
|
||||||
|
|
||||||
|
assert.NoError(t, json.Unmarshal(data, testStruct))
|
||||||
|
assert.EqualValues(t,
|
||||||
|
strings.ToLower(value),
|
||||||
|
testStruct.Value.Value(config.TypePreferIPPreferIPv4))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *TypePreferIPTestSuite) TestMarshalOk() {
|
||||||
|
testData := []string{
|
||||||
|
config.TypePreferIPPreferIPv4,
|
||||||
|
config.TypePreferIPPreferIPv6,
|
||||||
|
config.TypePreferOnlyIPv4,
|
||||||
|
config.TypePreferOnlyIPv6,
|
||||||
|
strings.ToUpper(config.TypePreferIPPreferIPv4),
|
||||||
|
strings.ToUpper(config.TypePreferIPPreferIPv6),
|
||||||
|
strings.ToUpper(config.TypePreferOnlyIPv4),
|
||||||
|
strings.ToUpper(config.TypePreferOnlyIPv6),
|
||||||
|
strings.ToLower(config.TypePreferIPPreferIPv4),
|
||||||
|
strings.ToLower(config.TypePreferIPPreferIPv6),
|
||||||
|
strings.ToLower(config.TypePreferOnlyIPv4),
|
||||||
|
strings.ToLower(config.TypePreferOnlyIPv6),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range testData {
|
||||||
|
value := v
|
||||||
|
|
||||||
|
data, err := json.Marshal(map[string]string{
|
||||||
|
"value": v,
|
||||||
|
})
|
||||||
|
suite.NoError(err)
|
||||||
|
|
||||||
|
suite.T().Run(v, func(t *testing.T) {
|
||||||
|
testStruct := &typePreferIPTestStruct{}
|
||||||
|
|
||||||
|
assert.NoError(t, json.Unmarshal(data, testStruct))
|
||||||
|
assert.Equal(t, strings.ToLower(value), testStruct.Value.String())
|
||||||
|
|
||||||
|
marshalled, err := testStruct.Value.MarshalText()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, strings.ToLower(value), string(marshalled))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *TypePreferIPTestSuite) TestValue() {
|
||||||
|
testStruct := &typePreferIPTestStruct{}
|
||||||
|
|
||||||
|
suite.EqualValues(config.TypePreferIPPreferIPv4,
|
||||||
|
testStruct.Value.Value(config.TypePreferIPPreferIPv4))
|
||||||
|
suite.EqualValues(config.TypePreferIPPreferIPv6,
|
||||||
|
testStruct.Value.Value(config.TypePreferIPPreferIPv6))
|
||||||
|
|
||||||
|
data, err := json.Marshal(map[string]string{
|
||||||
|
"value": config.TypePreferOnlyIPv4,
|
||||||
|
})
|
||||||
|
suite.NoError(err)
|
||||||
|
suite.NoError(json.Unmarshal(data, testStruct))
|
||||||
|
|
||||||
|
suite.EqualValues(config.TypePreferOnlyIPv4,
|
||||||
|
testStruct.Value.Value(config.TypePreferOnlyIPv6))
|
||||||
|
suite.EqualValues(config.TypePreferOnlyIPv4,
|
||||||
|
testStruct.Value.Value(config.TypePreferIPPreferIPv6))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTypePreferIP(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
suite.Run(t, &TypePreferIPTestSuite{})
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user