Skip to content

Commit

Permalink
Use json over yaml
Browse files Browse the repository at this point in the history
  • Loading branch information
xorkevin committed Apr 23, 2023
1 parent 1a4f1e2 commit 9d125f4
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 102 deletions.
69 changes: 40 additions & 29 deletions client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,6 @@ func (c *testClientC) fail(args []string) error {
func TestClient(t *testing.T) {
t.Parallel()

tabReplacer := strings.NewReplacer("\t", " ")

server := New(Opts{
Appname: "govtest",
Version: Version{
Expand All @@ -223,17 +221,24 @@ func TestClient(t *testing.T) {
Description: "test gov server",
EnvPrefix: "gov",
ClientPrefix: "govc",
ConfigReader: strings.NewReader(tabReplacer.Replace(`
http:
addr: ':8080'
basepath: /api
setupsecret: setupsecret
`)),
VaultReader: strings.NewReader(tabReplacer.Replace(`
data:
setupsecret:
secret: setupsecret
`)),
ConfigReader: strings.NewReader(`
{
"http": {
"addr": ":8080",
"basepath": "/api"
},
"setupsecret": "setupsecret"
}
`),
VaultReader: strings.NewReader(`
{
"data": {
"setupsecret": {
"secret": "setupsecret"
}
}
}
`),
LogWriter: io.Discard,
})

Expand All @@ -256,22 +261,28 @@ data:
client := NewClient(Opts{
Appname: "govtest",
ClientPrefix: "govc",
ConfigReader: strings.NewReader(tabReplacer.Replace(`
http:
baseurl: ` + hserver.URL + `/api
servicec:
propbool: true
propint: 123
propdur: 24h
prop1: value1
propslice:
- abc
- def
- ghi
propobj:
method: abc
path: def
`)),
ConfigReader: strings.NewReader(`
{
"http": {
"baseurl": "` + hserver.URL + `/api"
},
"servicec": {
"propbool": true,
"propint": 123,
"propdur": "24h",
"prop1": "value1",
"propslice": [
"abc",
"def",
"ghi"
],
"propobj": {
"method": "abc",
"path": "def"
}
}
}
`),
LogWriter: io.Discard,
TermConfig: &TermConfig{
StdinFd: int(os.Stdin.Fd()),
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ require (
golang.org/x/image v0.6.0
golang.org/x/term v0.6.0
gopkg.in/square/go-jose.v2 v2.6.0
gopkg.in/yaml.v3 v3.0.1
nhooyr.io/websocket v1.8.7
xorkevin.dev/hunter2 v0.2.7
xorkevin.dev/kerrors v0.1.5
Expand Down Expand Up @@ -90,4 +89,5 @@ require (
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
12 changes: 5 additions & 7 deletions govconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
vaultapi "github.com/hashicorp/vault/api"
"github.com/mitchellh/mapstructure"
"github.com/spf13/viper"
"gopkg.in/yaml.v3"
"xorkevin.dev/governor/util/kjson"
"xorkevin.dev/governor/util/uid"
"xorkevin.dev/kerrors"
)
Expand Down Expand Up @@ -256,7 +256,7 @@ func (s *settings) init(ctx context.Context, flags Flags) error {
s.config.Instance = u.Base32()

if s.configReader != nil {
s.v.SetConfigType("yaml")
s.v.SetConfigType("json")
if err := s.v.ReadConfig(s.configReader); err != nil {
return kerrors.WithKind(err, ErrInvalidConfig, "Failed to read in config")
}
Expand Down Expand Up @@ -307,7 +307,7 @@ type (
}

secretsFileData struct {
Data map[string]map[string]interface{} `yaml:"data"`
Data map[string]map[string]interface{} `json:"data"`
}
)

Expand All @@ -328,12 +328,10 @@ func newSecretsFileSource(s string, r io.Reader) (secretsClient, error) {
return nil, kerrors.WithKind(err, ErrInvalidConfig, "Failed to read secrets file source")
}
}
data := secretsFileData{}
if err := yaml.Unmarshal(b, &data); err != nil {
var data secretsFileData
if err := kjson.Unmarshal(b, &data); err != nil {
return nil, kerrors.WithKind(err, ErrInvalidConfig, "Invalid secrets file source file")
}
// yaml unmarshal attempts decode with int, and is safe to
// mapstructure.Decode
return &secretsFileSource{
path: s,
data: data,
Expand Down
104 changes: 60 additions & 44 deletions governor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -388,8 +388,6 @@ func (r *testVersionRes) Value() interface{} {
func TestServer(t *testing.T) {
t.Parallel()

tabReplacer := strings.NewReplacer("\t", " ")

t.Run("ServeHTTP", func(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -801,6 +799,8 @@ func TestServer(t *testing.T) {
t.Run(tc.Test, func(t *testing.T) {
t.Parallel()

assert := require.New(t)

var logbuf bytes.Buffer

maxreqsize := "2MB"
Expand All @@ -817,51 +817,67 @@ func TestServer(t *testing.T) {
Description: "test gov server",
EnvPrefix: "gov",
ClientPrefix: "govc",
ConfigReader: strings.NewReader(tabReplacer.Replace(`
http:
addr: ':8080'
basepath: /api
maxreqsize: ` + maxreqsize + `
cors:
alloworigins:
- 'http://localhost:3000'
allowpaths:
- '^/api/servicea/ping/allowall$'
routerewrite:
-
host: localhost:8080
methods: ['POST']
pattern: '^/.well-known/(.+)$'
replace: '/api/servicea/$1'
trustedproxies:
- '10.0.0.0/8'
setupsecret: setupsecret
servicea:
prop2: yetanothervalue
somesecret: s1secret
bogussecret: bogussecret
propbool: true
propint: 271828
propdur: 24h
propstrslice:
- abc
- def
propobj:
-
field1: abc
`)),
VaultReader: strings.NewReader(tabReplacer.Replace(`
data:
setupsecret:
secret: setupsecret
s1secret:
secret: secretval
`)),
ConfigReader: strings.NewReader(`
{
"http": {
"addr": ":8080",
"basepath": "/api",
"maxreqsize": "` + maxreqsize + `"
},
"cors": {
"alloworigins": [
"http://localhost:3000"
],
"allowpaths": [
"^/api/servicea/ping/allowall$"
]
},
"routerewrite": [
{
"host": "localhost:8080",
"methods": ["POST"],
"pattern": "^/.well-known/(.+)$",
"replace": "/api/servicea/$1"
}
],
"trustedproxies": [
"10.0.0.0/8"
],
"setupsecret": "setupsecret",
"servicea": {
"prop2": "yetanothervalue",
"somesecret": "s1secret",
"bogussecret": "bogussecret",
"propbool": true,
"propint": 271828,
"propdur": "24h",
"propstrslice": [
"abc",
"def"
],
"propobj": [
{
"field1": "abc"
}
]
}
}
`),
VaultReader: strings.NewReader(`
{
"data": {
"setupsecret": {
"secret": "setupsecret"
},
"s1secret": {
"secret": "secretval"
}
}
}
`),
LogWriter: &logbuf,
})

assert := require.New(t)

serviceA := newTestServiceA(tc.Check)
server.Register("servicea", "/servicea", serviceA)

Expand Down
31 changes: 18 additions & 13 deletions govrouter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,6 @@ func (r *testServiceBReq) Value() interface{} {
func TestRouter(t *testing.T) {
t.Parallel()

tabReplacer := strings.NewReplacer("\t", " ")

t.Run("ServeHTTP", func(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -496,17 +494,24 @@ func TestRouter(t *testing.T) {
Description: "test gov server",
EnvPrefix: "gov",
ClientPrefix: "govc",
ConfigReader: strings.NewReader(tabReplacer.Replace(`
http:
addr: ':8080'
basepath: /api
setupsecret: setupsecret
`)),
VaultReader: strings.NewReader(tabReplacer.Replace(`
data:
setupsecret:
secret: setupsecret
`)),
ConfigReader: strings.NewReader(`
{
"http": {
"addr": ":8080",
"basepath": "/api"
},
"setupsecret": "setupsecret"
}
`),
VaultReader: strings.NewReader(`
{
"data": {
"setupsecret": {
"secret": "setupsecret"
}
}
}
`),
LogWriter: io.Discard,
})

Expand Down
16 changes: 8 additions & 8 deletions util/dns/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,25 @@ import (
"os"
"strings"

"gopkg.in/yaml.v3"
"xorkevin.dev/governor/util/kjson"
"xorkevin.dev/kerrors"
)

type (
MockZone struct {
A []string `yaml:"A"`
AAAA []string `yaml:"AAAA"`
MX []net.MX `yaml:"MX"`
TXT []string `yaml:"TXT"`
CNAME string `yaml:"CNAME"`
A []string `json:"A"`
AAAA []string `json:"AAAA"`
MX []net.MX `json:"MX"`
TXT []string `json:"TXT"`
CNAME string `json:"CNAME"`
}

MockResolver struct {
Zones map[string]MockZone
}

zoneData struct {
Data map[string]MockZone `yaml:"data"`
Data map[string]MockZone `json:"data"`
}
)

Expand Down Expand Up @@ -72,7 +72,7 @@ func NewMockResolverFromFile(s string) (Resolver, error) {
return nil, kerrors.WithMsg(err, fmt.Sprintf("Failed to read mockdns file %s", s))
}
data := zoneData{}
if err := yaml.Unmarshal(b, &data); err != nil {
if err := kjson.Unmarshal(b, &data); err != nil {
return nil, kerrors.WithMsg(err, fmt.Sprintf("Invalid mockdns file %s", s))
}
return &MockResolver{
Expand Down

0 comments on commit 9d125f4

Please sign in to comment.