From 2e243dfd0c86665b6b4cb7a1072edea410cf15e1 Mon Sep 17 00:00:00 2001 From: jjyaoao Date: Wed, 7 Jun 2023 07:55:16 +0000 Subject: [PATCH] test(objectnode): add auth.go unit test Signed-off-by: jjyaoao --- objectnode/auth_test.go | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 objectnode/auth_test.go diff --git a/objectnode/auth_test.go b/objectnode/auth_test.go new file mode 100644 index 000000000..5914d7ed4 --- /dev/null +++ b/objectnode/auth_test.go @@ -0,0 +1,52 @@ +package objectnode + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestParseRequestAuthInfo(t *testing.T) { + // Create a mock HTTP request for each signature version + v2HeaderReq := httptest.NewRequest("GET", "http://example.com/bucket", nil) + v2HeaderReq.Header.Set(HeaderNameAuthorization, RequestHeaderV2AuthorizationScheme+" AWSAccessKeyId:Signature") + + // v4HeaderReq := httptest.NewRequest("GET", "http://example.com/bucket", nil) + // v4HeaderReq.Header.Set(HeaderNameAuthorization, SignatureV4Algorithm+" Credential=AWSAccessKeyId/20230721/us-east-1/s3/aws4_request") + + v2QueryReq := httptest.NewRequest("GET", "http://example.com/bucket?AWSAccessKeyId=AccessKey&Expires=1573369185&Signature=Signature", nil) + + // v4QueryReq := httptest.NewRequest("GET", "http://example.com/bucket?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSAccessKeyId/20230721/us-east-1/s3/aws4_request", nil) + + tests := []struct { + name string + request *http.Request + expected *RequestAuthInfo + }{ + { + name: "V2 header", + request: v2HeaderReq, + expected: &RequestAuthInfo{ + authType: SignatrueV2, + accessKey: "AWSAccessKeyId", + }, + }, + { + name: "V2 query", + request: v2QueryReq, + expected: &RequestAuthInfo{ + authType: PresignedV2, + accessKey: "AccessKey", + }, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + actual := parseRequestAuthInfo(tc.request) + assert.Equal(t, tc.expected, actual) + }) + } +}