1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
// Copyright (C) MongoDB, Inc. 2017-present.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
package auth
import (
"errors"
"testing"
"go.mongodb.org/mongo-driver/internal/testutil/assert"
)
func TestGetRegion(t *testing.T) {
longHost := make([]rune, 256)
emptyErr := errors.New("invalid STS host: empty")
tooLongErr := errors.New("invalid STS host: too large")
emptyPartErr := errors.New("invalid STS host: empty part")
testCases := []struct {
name string
host string
err error
region string
}{
{"success default", "sts.amazonaws.com", nil, "us-east-1"},
{"success parse", "first.second", nil, "second"},
{"success no region", "first", nil, "us-east-1"},
{"error host too long", string(longHost), tooLongErr, ""},
{"error host empty", "", emptyErr, ""},
{"error empty middle part", "abc..def", emptyPartErr, ""},
{"error empty part", "first.", emptyPartErr, ""},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
reg, err := getRegion(tc.host)
if tc.err == nil {
assert.Nil(t, err, "error getting region: %v", err)
assert.Equal(t, tc.region, reg, "expected %v, got %v", tc.region, reg)
return
}
assert.NotNil(t, err, "expected error, got nil")
assert.Equal(t, err, tc.err, "expected error: %v, got: %v", tc.err, err)
})
}
}
|