From ce2a4a7c1f63d590b416d9bcabcc5bbedd596d18 Mon Sep 17 00:00:00 2001 From: Roman Hargrave Date: Fri, 9 Sep 2022 22:59:31 -0700 Subject: [PATCH] add test suite for aws signing module --- test/aws_util_SUITE.erl | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 test/aws_util_SUITE.erl diff --git a/test/aws_util_SUITE.erl b/test/aws_util_SUITE.erl new file mode 100644 index 000000000..6b7fbb69c --- /dev/null +++ b/test/aws_util_SUITE.erl @@ -0,0 +1,56 @@ +%%%---------------------------------------------------------------------- +%%% File : aws_util_SUITE.erl +%%% Usage : AWS URL Signing Tests +%%% Author : Roman Hargrave +%%% Created : 08 Sept 2022 by Roman Hargrave +%%% +%%% +%%% This program is free software; you can redistribute it and/or +%%% modify it under the terms of the GNU General Public License as +%%% published by the Free Software Foundation; either version 2 of the +%%% License, or (at your option) any later version. +%%% +%%% This program is distributed in the hope that it will be useful, +%%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +%%% General Public License for more details. +%%% +%%% You should have received a copy of the GNU General Public License along +%%% with this program; if not, write to the Free Software Foundation, Inc., +%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +%%%---------------------------------------------------------------------- + +-module(aws_util_SUITE). +-author("roman@hargrave.info"). + +-include("aws.hrl"). + +-behaviour(ct_suite). + +-export([all/0, + signs_url/1]). + +all() -> + [signs_url]. + +-define(EXPECT_SIGNED_URL, + <<"https://examplebucket.s3.amazonaws.com/test.txt?X-Amz-Signature=aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20130524%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20130524T000000Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host">>). + +% Amazon effectively declares that any valid signing implementation +% should generate the signature +% aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404 for +% the values given below +signs_url(_Config) -> + Auth = #aws_auth{access_key_id = <<"AKIAIOSFODNN7EXAMPLE">>, + access_key = <<"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY">>, + region = <<"us-east-1">>}, + Time = {{2013, 05, 24}, {00, 00, 00}}, + TTL = 86400, + URL = <<"https://examplebucket.s3.amazonaws.com/test.txt">>, + case aws_util:signed_url(Auth, get, ?AWS_SERVICE_S3, URL, [], Time, TTL) of + ?EXPECT_SIGNED_URL -> + ok; + UnexpectedUrl -> + {failed, {{expected, ?EXPECT_SIGNED_URL}, + {received, UnexpectedUrl}}} + end.