package util

import (
	"testing"

	. "github.com/onsi/gomega"
)

func TestGetRootUserARN(t *testing.T) {
	tests := []struct {
		name    string
		roleARN string
		want    string
	}{
		{
			name:    "normal role ARN",
			roleARN: "arn:aws:iam::123456789012:role:test",
			want:    "arn:aws:iam::123456789012:root",
		},
		{
			name:    "invalid role ARN",
			roleARN: "not a role ARN",
			want:    "",
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := GetRootUserARN(tt.roleARN); got != tt.want {
				t.Errorf("GetRootUserARN() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestGetSANameFromSAEmail(t *testing.T) {
	tests := map[string]struct {
		saEmail string
		want    string
	}{
		"normal": {
			saEmail: "sa@project.iam.gserviceaccount.com",
			want:    "sa",
		},
		"invalid": {
			saEmail: "project.iam.gserviceaccount.com",
			want:    "",
		},
	}
	for name, tt := range tests {
		t.Run(name, func(t *testing.T) {
			g := NewGomegaWithT(t)
			got := GetSANameFromSAEmail(tt.saEmail)
			g.Expect(got).To(Equal(tt.want))
		})
	}
}
