package configs

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

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

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

		config["oidc"] = "oidc1"
		config["oidc-arn"] = "oidc-arn1"
		config["account"] = "account1"
		config["region"] = "region1"
		config["biz_type_accounts"] = []map[string]string{
			{
				"biz_type": "type1",
				"role_arn": "roleArn1",
			},
			{
				"biz_type": "type2",
				"role_arn": "roleArn2",
			},
		}

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

		result := LoadAccountInfo(path)
		assert.NotEmpty(t, result)
		assert.Equal(t, "oidc-arn1", result.OidcARN)
		assert.Equal(t, "oidc1", result.Oidc)
		assert.Equal(t, "region1", result.Region)
		assert.Equal(t, "account1", result.Account)

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

}
