package configs

import (
	"io/fs"
	"os"
	"testing"

	"github.com/stretchr/testify/assert"
	"gopkg.in/yaml.v3"
)

func TestLoadSNSConfig(t *testing.T) {
	t.Run("normal", func(t *testing.T) {
		config := make(map[string]interface{})

		config["roleArn"] = "test"
		config["url"] = "https://test.com"
		config["region"] = "region1"

		content, err := yaml.Marshal(config)
		assert.NoError(t, err)
		path := "snsconfig.yaml"
		os.WriteFile(path, content, fs.ModePerm)
		defer os.Remove(path)

		result := LoadSNSConfig(path)
		assert.NotEmpty(t, result)
		assert.Equal(t, "region1", result.Region)
		assert.Equal(t, "test", result.RoleArn)
		assert.Equal(t, "https://test.com", result.Url)
	})

	t.Run("invalid file", func(t *testing.T) {
		assert.Panics(t, func() {
			LoadSNSConfig("invalid")
		})
	})
}
