Files
im_server/server/media_config_test.go
T

60 lines
1.6 KiB
Go

package main
import (
"encoding/json"
"testing"
"github.com/tinode/chat/server/store"
)
type testMediaConfigProvider struct{ handler string }
func (p testMediaConfigProvider) Get(string, ...string) (map[string]string, error) {
return map[string]string{"media_handler": p.handler}, nil
}
func TestResolveObjectStorageMediaHandler(t *testing.T) {
for _, provider := range []string{"oss", "minio"} {
t.Run(provider, func(t *testing.T) {
handler, raw, err := resolveMediaHandlerConfig(&mediaConfig{UseHandler: provider})
if err != nil {
t.Fatal(err)
}
if handler != provider {
t.Fatalf("handler = %q", handler)
}
var config struct {
Provider string `json:"provider"`
UseSysConfig bool `json:"use_sys_config"`
}
if err := json.Unmarshal([]byte(raw), &config); err != nil {
t.Fatal(err)
}
if config.Provider != provider || !config.UseSysConfig {
t.Fatalf("resolved config = %+v", config)
}
})
}
}
func TestResolveMediaHandlerFromSysConfig(t *testing.T) {
previous := store.ThirdPartyConfig
store.ThirdPartyConfig = testMediaConfigProvider{handler: "minio"}
defer func() { store.ThirdPartyConfig = previous }()
handler, raw, err := resolveMediaHandlerConfig(&mediaConfig{UseHandler: "sys_config"})
if err != nil {
t.Fatal(err)
}
var config struct {
Provider string `json:"provider"`
UseSysConfig bool `json:"use_sys_config"`
}
if err := json.Unmarshal([]byte(raw), &config); err != nil {
t.Fatal(err)
}
if handler != "minio" || config.Provider != "minio" || !config.UseSysConfig {
t.Fatalf("handler=%q config=%+v", handler, config)
}
}