github.com/versent/saml2aws@v2.17.0+incompatible/aws_account_test.go (about)

     1  package saml2aws
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestExtractAWSAccounts(t *testing.T) {
    11  	data, err := ioutil.ReadFile("testdata/saml.html")
    12  	assert.Nil(t, err)
    13  
    14  	accounts, err := ExtractAWSAccounts(data)
    15  	assert.Nil(t, err)
    16  	assert.Len(t, accounts, 2)
    17  
    18  	account := accounts[0]
    19  	assert.Equal(t, account.Name, "Account: account-alias (000000000001)")
    20  
    21  	assert.Len(t, account.Roles, 2)
    22  	role := account.Roles[0]
    23  	assert.Equal(t, role.RoleARN, "arn:aws:iam::000000000001:role/Development")
    24  	assert.Equal(t, role.Name, "Development")
    25  	role = account.Roles[1]
    26  	assert.Equal(t, role.RoleARN, "arn:aws:iam::000000000001:role/Production")
    27  	assert.Equal(t, role.Name, "Production")
    28  
    29  	account = accounts[1]
    30  	assert.Equal(t, account.Name, "Account: 000000000002")
    31  
    32  	assert.Len(t, account.Roles, 1)
    33  	role = account.Roles[0]
    34  	assert.Equal(t, role.RoleARN, "arn:aws:iam::000000000002:role/Production")
    35  	assert.Equal(t, role.Name, "Production")
    36  }
    37  
    38  func TestAssignPrincipals(t *testing.T) {
    39  	awsRoles := []*AWSRole{
    40  		{
    41  			PrincipalARN: "arn:aws:iam::000000000001:saml-provider/test-idp",
    42  			RoleARN:      "arn:aws:iam::000000000001:role/Development",
    43  		},
    44  	}
    45  
    46  	awsAccounts := []*AWSAccount{
    47  		{
    48  			Roles: []*AWSRole{
    49  				{
    50  					RoleARN: "arn:aws:iam::000000000001:role/Development",
    51  				},
    52  			},
    53  		},
    54  	}
    55  
    56  	AssignPrincipals(awsRoles, awsAccounts)
    57  
    58  	assert.Equal(t, "arn:aws:iam::000000000001:saml-provider/test-idp", awsAccounts[0].Roles[0].PrincipalARN)
    59  }
    60  
    61  func TestLocateRole(t *testing.T) {
    62  	awsRoles := []*AWSRole{
    63  		{
    64  			PrincipalARN: "arn:aws:iam::000000000001:saml-provider/test-idp",
    65  			RoleARN:      "arn:aws:iam::000000000001:role/Development",
    66  		},
    67  		{
    68  			PrincipalARN: "arn:aws:iam::000000000002:saml-provider/test-idp",
    69  			RoleARN:      "arn:aws:iam::000000000002:role/Development",
    70  		},
    71  	}
    72  
    73  	role, err := LocateRole(awsRoles, "arn:aws:iam::000000000001:role/Development")
    74  
    75  	assert.Empty(t, err)
    76  
    77  	assert.Equal(t, "arn:aws:iam::000000000001:role/Development", role.RoleARN)
    78  }