in e2etest/declarativeRunner.go [52:103]
func getValidCredCombinationsForFromTo(fromTo common.FromTo, requestedCredentialTypesSrc, requestedCredentialTypesDst []common.CredentialType, accountTypes []AccountType) [][2]common.CredentialType {
output := make([][2]common.CredentialType, 0)
credIsRequested := func(cType common.CredentialType, dst bool) bool {
if (dst && requestedCredentialTypesDst == nil) || (!dst && requestedCredentialTypesSrc == nil) {
return true
}
toSearch := requestedCredentialTypesSrc
if dst {
toSearch = requestedCredentialTypesDst
}
for _, v := range toSearch {
if v == cType {
return true
}
}
return false
}
// determine source types
var sourceTypes []common.CredentialType
if fromTo.IsS2S() && (fromTo != common.EFromTo.BlobBlob() && fromTo != common.EFromTo.BlobFile() && fromTo != common.EFromTo.FileFile()) {
// source must always be anonymous-- no exceptions until OAuth over S2S is introduced.
sourceTypes = []common.CredentialType{common.ECredentialType.Anonymous()}
} else {
sourceTypes = validCredTypesPerLocation[fromTo.From()]
}
for _, srcCredType := range sourceTypes {
if srcCredType == common.ECredentialType.MDOAuthToken() && accountTypes[0] != EAccountType.OAuthManagedDisk() && accountTypes[0] != EAccountType.ManagedDiskSnapshotOAuth() {
continue // invalid selection
}
for _, dstCredType := range validCredTypesPerLocation[fromTo.To()] {
if dstCredType == common.ECredentialType.MDOAuthToken() && accountTypes[1] != EAccountType.OAuthManagedDisk() && accountTypes[0] != EAccountType.ManagedDiskSnapshotOAuth() {
continue // invalid selection
}
// make sure the user asked for this.
if !(credIsRequested(srcCredType, false) && credIsRequested(dstCredType, true)) {
continue
}
output = append(output, [2]common.CredentialType{srcCredType, dstCredType})
}
}
return output
}