diff --git a/config/config_test.go b/config/config_test.go new file mode 100644 index 0000000..8badd02 --- /dev/null +++ b/config/config_test.go @@ -0,0 +1,43 @@ +package config + +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +const testParserConf = ` +token: "test_token" +url: test.url +port: 5010 +` + +type TestConf struct { + Token string `yaml:"token"` + Url string `yaml:"url"` + Port int `yaml:"port"` +} + +func TestParser(t *testing.T) { + file, err := os.CreateTemp("", "config") + if err != nil { + t.Fatal(err) + } + defer file.Close() + + _, err = file.WriteString(testParserConf) + if err != nil { + t.Fatal(err) + } + + p := NewParser[TestConf]() + conf, err := p.ParseFile(file.Name()) + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, "test_token", conf.Token) + assert.Equal(t, "test.url", conf.Url) + assert.Equal(t, 5010, conf.Port) +} diff --git a/go.mod b/go.mod index 077aeee..71d1934 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,12 @@ go 1.22.5 require ( github.com/gin-gonic/gin v1.10.0 + github.com/go-playground/validator/v10 v10.22.0 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/jackc/pgx v3.6.2+incompatible + github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.25.0 + gopkg.in/yaml.v3 v3.0.1 ) require ( @@ -15,11 +18,11 @@ require ( github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/cockroachdb/apd v1.1.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/gabriel-vasile/mimetype v1.4.4 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/goccy/go-json v0.10.3 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect @@ -33,6 +36,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect @@ -42,5 +46,4 @@ require ( golang.org/x/text v0.16.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect )