feat: image variants engine
This commit is contained in:
1 parent
f0845de643
commit
f1d56ef50e
80 files changed
+7312
-84
No files matched your search
@@ -0,0 +1,102 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/infrastructure/config"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const maxSourceEnv = "IMAGE_VARIANT_MAX_SOURCE_BYTES"
|
||||
|
||||
func readRepositoryFile(t *testing.T, relative string) string {
|
||||
t.Helper()
|
||||
content, err := os.ReadFile("../" + relative)
|
||||
if err != nil {
|
||||
t.Fatalf("cannot read %s: %v", relative, err)
|
||||
}
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func between(source string, opening string, closing string) string {
|
||||
start := strings.Index(source, opening)
|
||||
if start < 0 {
|
||||
return ""
|
||||
}
|
||||
rest := source[start+len(opening):]
|
||||
end := strings.Index(rest, closing)
|
||||
if end < 0 {
|
||||
return rest
|
||||
}
|
||||
return rest[:end]
|
||||
}
|
||||
|
||||
func TestImageVariantMaxSourceBytesSetting(t *testing.T) {
|
||||
rows := []struct {
|
||||
value string
|
||||
unset bool
|
||||
want int64
|
||||
failure bool
|
||||
}{
|
||||
{unset: true, want: 10485760},
|
||||
{value: "2048", want: 2048},
|
||||
{value: "1", want: 1},
|
||||
{value: "0", failure: true},
|
||||
{value: "-5", failure: true},
|
||||
{value: "many", failure: true},
|
||||
{value: "1.5", failure: true},
|
||||
}
|
||||
for _, row := range rows {
|
||||
name := row.value
|
||||
if row.unset {
|
||||
name = "unset"
|
||||
}
|
||||
t.Run("The env var is loaded: "+name, func(t *testing.T) {
|
||||
setBaseSettingsEnv(t)
|
||||
if row.unset {
|
||||
t.Setenv(maxSourceEnv, "")
|
||||
} else {
|
||||
t.Setenv(maxSourceEnv, row.value)
|
||||
}
|
||||
|
||||
settings, err := config.NewSettingsFromEnv()
|
||||
|
||||
if row.failure {
|
||||
if err == nil || !strings.Contains(err.Error(), maxSourceEnv) {
|
||||
t.Errorf("err = %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
if err != nil || settings.ImageVariantMaxSourceBytes != row.want {
|
||||
t.Errorf("value = %d, err = %v", settings.ImageVariantMaxSourceBytes, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestImageVariantMaxSourceBytesDocumentation(t *testing.T) {
|
||||
t.Run("The default is listed in envDefaults and not in requiredEnvVars", func(t *testing.T) {
|
||||
main := readRepositoryFile(t, "cmd/server/main.go")
|
||||
|
||||
defaults := between(main, "var envDefaults = map[string]string{", "\n}")
|
||||
required := between(main, "var requiredEnvVars = []string{", "\n}")
|
||||
|
||||
if !strings.Contains(defaults, "config.EnvImageVariantMaxSourceBytes") || strings.Contains(required, "ImageVariant") || strings.Contains(required, maxSourceEnv) {
|
||||
t.Error("the default is misplaced")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("The constant name and default are the documented ones", func(t *testing.T) {
|
||||
if config.EnvImageVariantMaxSourceBytes != maxSourceEnv || config.DefaultImageVariantMaxSourceBytes != "10485760" {
|
||||
t.Errorf("constants = %q %q", config.EnvImageVariantMaxSourceBytes, config.DefaultImageVariantMaxSourceBytes)
|
||||
}
|
||||
})
|
||||
|
||||
for _, document := range []string{".env.example", "docs/configuration.md"} {
|
||||
t.Run("The env var is documented in "+document, func(t *testing.T) {
|
||||
if !strings.Contains(readRepositoryFile(t, document), maxSourceEnv) {
|
||||
t.Errorf("%s does not mention %s", document, maxSourceEnv)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user