Skip to content

Commit

Permalink
Rename awsmock_test.go to mock.go and export functions and types
Browse files Browse the repository at this point in the history
  • Loading branch information
bflad committed Feb 18, 2019
1 parent 61fd1aa commit 5f25f90
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 71 deletions.
128 changes: 64 additions & 64 deletions awsauth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ func TestGetAccountIDAndPartition(t *testing.T) {
Description string
AuthProviderName string
EC2MetadataEndpoints []*endpoint
IAMEndpoints []*awsMockEndpoint
STSEndpoints []*awsMockEndpoint
IAMEndpoints []*MockEndpoint
STSEndpoints []*MockEndpoint
ErrCount int
ExpectedAccountID string
ExpectedPartition string
Expand All @@ -30,10 +30,10 @@ func TestGetAccountIDAndPartition(t *testing.T) {
Description: "EC2 Metadata over iam:GetUser when using EC2 Instance Profile",
AuthProviderName: ec2rolecreds.ProviderName,
EC2MetadataEndpoints: append(ec2metadata_securityCredentialsEndpoints, ec2metadata_instanceIdEndpoint, ec2metadata_iamInfoEndpoint),
IAMEndpoints: []*awsMockEndpoint{
IAMEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{200, iamResponse_GetUser_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{200, iamResponse_GetUser_valid, "text/xml"},
},
},
ExpectedAccountID: ec2metadata_iamInfoEndpoint_expectedAccountID,
Expand All @@ -43,79 +43,79 @@ func TestGetAccountIDAndPartition(t *testing.T) {
Description: "Mimic the metadata service mocked by Hologram (https://github.com/AdRoll/hologram)",
AuthProviderName: ec2rolecreds.ProviderName,
EC2MetadataEndpoints: ec2metadata_securityCredentialsEndpoints,
IAMEndpoints: []*awsMockEndpoint{
IAMEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
},
},
STSEndpoints: []*awsMockEndpoint{
STSEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{200, stsResponse_GetCallerIdentity_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{200, stsResponse_GetCallerIdentity_valid, "text/xml"},
},
},
ExpectedAccountID: stsResponse_GetCallerIdentity_valid_expectedAccountID,
ExpectedPartition: stsResponse_GetCallerIdentity_valid_expectedPartition,
},
{
Description: "iam:ListRoles if iam:GetUser AccessDenied and sts:GetCallerIdentity fails",
IAMEndpoints: []*awsMockEndpoint{
IAMEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
},
{
Request: &awsMockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &awsMockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &MockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
},
},
STSEndpoints: []*awsMockEndpoint{
STSEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
},
},
ExpectedAccountID: iamResponse_ListRoles_valid_expectedAccountID,
ExpectedPartition: iamResponse_ListRoles_valid_expectedPartition,
},
{
Description: "iam:ListRoles if iam:GetUser ValidationError and sts:GetCallerIdentity fails",
IAMEndpoints: []*awsMockEndpoint{
IAMEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
},
{
Request: &awsMockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &awsMockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &MockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
},
},
STSEndpoints: []*awsMockEndpoint{
STSEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
},
},
ExpectedAccountID: iamResponse_ListRoles_valid_expectedAccountID,
ExpectedPartition: iamResponse_ListRoles_valid_expectedPartition,
},
{
Description: "Error when all endpoints fail",
IAMEndpoints: []*awsMockEndpoint{
IAMEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
},
{
Request: &awsMockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &awsMockResponse{403, iamResponse_ListRoles_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &MockResponse{403, iamResponse_ListRoles_unauthorized, "text/xml"},
},
},
STSEndpoints: []*awsMockEndpoint{
STSEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
},
},
ErrCount: 1,
Expand All @@ -130,13 +130,13 @@ func TestGetAccountIDAndPartition(t *testing.T) {
awsTs := awsMetadataApiMock(testCase.EC2MetadataEndpoints)
defer awsTs()

closeIam, iamSess, err := getMockedAwsApiSession("IAM", testCase.IAMEndpoints)
closeIam, iamSess, err := GetMockedAwsApiSession("IAM", testCase.IAMEndpoints)
defer closeIam()
if err != nil {
t.Fatal(err)
}

closeSts, stsSess, err := getMockedAwsApiSession("STS", testCase.STSEndpoints)
closeSts, stsSess, err := GetMockedAwsApiSession("STS", testCase.STSEndpoints)
defer closeSts()
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -187,37 +187,37 @@ func TestGetAccountIDAndPartitionFromEC2Metadata(t *testing.T) {
func TestGetAccountIDAndPartitionFromIAMGetUser(t *testing.T) {
var testCases = []struct {
Description string
MockEndpoints []*awsMockEndpoint
MockEndpoints []*MockEndpoint
ErrCount int
ExpectedAccountID string
ExpectedPartition string
}{
{
Description: "Ignore iam:GetUser failure with federated user",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{400, iamResponse_GetUser_federatedFailure, "text/xml"},
},
},
ErrCount: 0,
},
{
Description: "Ignore iam:GetUser failure with unauthorized user",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{403, iamResponse_GetUser_unauthorized, "text/xml"},
},
},
ErrCount: 0,
},
{
Description: "iam:GetUser success",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &awsMockResponse{200, iamResponse_GetUser_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetUser&Version=2010-05-08"},
Response: &MockResponse{200, iamResponse_GetUser_valid, "text/xml"},
},
},
ExpectedAccountID: iamResponse_GetUser_valid_expectedAccountID,
Expand All @@ -227,7 +227,7 @@ func TestGetAccountIDAndPartitionFromIAMGetUser(t *testing.T) {

for _, testCase := range testCases {
t.Run(testCase.Description, func(t *testing.T) {
closeIam, iamSess, err := getMockedAwsApiSession("IAM", testCase.MockEndpoints)
closeIam, iamSess, err := GetMockedAwsApiSession("IAM", testCase.MockEndpoints)
defer closeIam()
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -255,27 +255,27 @@ func TestGetAccountIDAndPartitionFromIAMGetUser(t *testing.T) {
func TestGetAccountIDAndPartitionFromIAMListRoles(t *testing.T) {
var testCases = []struct {
Description string
MockEndpoints []*awsMockEndpoint
MockEndpoints []*MockEndpoint
ErrCount int
ExpectedAccountID string
ExpectedPartition string
}{
{
Description: "iam:ListRoles unauthorized",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &awsMockResponse{403, iamResponse_ListRoles_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &MockResponse{403, iamResponse_ListRoles_unauthorized, "text/xml"},
},
},
ErrCount: 1,
},
{
Description: "iam:ListRoles success",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &awsMockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=ListRoles&MaxItems=1&Version=2010-05-08"},
Response: &MockResponse{200, iamResponse_ListRoles_valid, "text/xml"},
},
},
ExpectedAccountID: iamResponse_ListRoles_valid_expectedAccountID,
Expand All @@ -285,7 +285,7 @@ func TestGetAccountIDAndPartitionFromIAMListRoles(t *testing.T) {

for _, testCase := range testCases {
t.Run(testCase.Description, func(t *testing.T) {
closeIam, iamSess, err := getMockedAwsApiSession("IAM", testCase.MockEndpoints)
closeIam, iamSess, err := GetMockedAwsApiSession("IAM", testCase.MockEndpoints)
defer closeIam()
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -313,27 +313,27 @@ func TestGetAccountIDAndPartitionFromIAMListRoles(t *testing.T) {
func TestGetAccountIDAndPartitionFromSTSGetCallerIdentity(t *testing.T) {
var testCases = []struct {
Description string
MockEndpoints []*awsMockEndpoint
MockEndpoints []*MockEndpoint
ErrCount int
ExpectedAccountID string
ExpectedPartition string
}{
{
Description: "sts:GetCallerIdentity unauthorized",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{403, stsResponse_GetCallerIdentity_unauthorized, "text/xml"},
},
},
ErrCount: 1,
},
{
Description: "sts:GetCallerIdentity success",
MockEndpoints: []*awsMockEndpoint{
MockEndpoints: []*MockEndpoint{
{
Request: &awsMockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &awsMockResponse{200, stsResponse_GetCallerIdentity_valid, "text/xml"},
Request: &MockRequest{"POST", "/", "Action=GetCallerIdentity&Version=2011-06-15"},
Response: &MockResponse{200, stsResponse_GetCallerIdentity_valid, "text/xml"},
},
},
ExpectedAccountID: stsResponse_GetCallerIdentity_valid_expectedAccountID,
Expand All @@ -343,7 +343,7 @@ func TestGetAccountIDAndPartitionFromSTSGetCallerIdentity(t *testing.T) {

for _, testCase := range testCases {
t.Run(testCase.Description, func(t *testing.T) {
closeSts, stsSess, err := getMockedAwsApiSession("STS", testCase.MockEndpoints)
closeSts, stsSess, err := GetMockedAwsApiSession("STS", testCase.MockEndpoints)
defer closeSts()
if err != nil {
t.Fatal(err)
Expand Down
14 changes: 7 additions & 7 deletions awsmock_test.go → mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import (
"github.com/aws/aws-sdk-go/aws/session"
)

// getMockedAwsApiSession establishes a httptest server to simulate behaviour
// GetMockedAwsApiSession establishes a httptest server to simulate behaviour
// of a real AWS API server
func getMockedAwsApiSession(svcName string, endpoints []*awsMockEndpoint) (func(), *session.Session, error) {
func GetMockedAwsApiSession(svcName string, endpoints []*MockEndpoint) (func(), *session.Session, error) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
buf := new(bytes.Buffer)
if _, err := buf.ReadFrom(r.Body); err != nil {
Expand Down Expand Up @@ -58,18 +58,18 @@ func getMockedAwsApiSession(svcName string, endpoints []*awsMockEndpoint) (func(
return ts.Close, sess, err
}

type awsMockEndpoint struct {
Request *awsMockRequest
Response *awsMockResponse
type MockEndpoint struct {
Request *MockRequest
Response *MockResponse
}

type awsMockRequest struct {
type MockRequest struct {
Method string
Uri string
Body string
}

type awsMockResponse struct {
type MockResponse struct {
StatusCode int
Body string
ContentType string
Expand Down

0 comments on commit 5f25f90

Please sign in to comment.