/
base_test.rb
105 lines (88 loc) · 3.86 KB
/
base_test.rb
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
require File.expand_path('../helper', __FILE__)
class BaseTest < Test::Unit::TestCase
def test_connection_established
instance = Base.new(:access_key_id => '123', :secret_access_key => 'abc')
assert_not_nil instance.instance_variable_get("@http")
end
def test_failed_response
@base = generate_base
mock_connection(@base, {:code => 403, :body => %{
<ErrorResponse>
<Error>
<Type>
Sender
</Type>
<Code>
ValidationError
</Code>
<Message>
Value null at 'message.subject' failed to satisfy constraint: Member must not be null
</Message>
</Error>
<RequestId>
42d59b56-7407-4c4a-be0f-4c88daeea257
</RequestId>
</ErrorResponse>
}})
assert_raises ResponseError do
result = @base.request('', {})
end
# assert !result.success?
# assert result.error?
# assert result.error.error?
# assert_equal 'ValidationError', result.error.code
end
def test_ses_authorization_header_v2
aws_access_key_id = 'fake_aws_key_id'
aws_secret_access_key = 'fake_aws_access_key'
timestamp = Time.new(2020, 7, 2, 7, 17, 58, '+00:00')
base = ::AWS::SES::Base.new(
access_key_id: aws_access_key_id,
secret_access_key: aws_secret_access_key
)
assert_equal 'AWS3-HTTPS AWSAccessKeyId=fake_aws_key_id, Algorithm=HmacSHA256, Signature=eHh/cPIJJUc1+RMCueAi50EPlYxkZNXMrxtGxjkBD1w=', base.get_aws_auth_param(timestamp.httpdate, aws_secret_access_key)
end
def test_ses_authorization_header_v4
aws_access_key_id = 'fake_aws_key_id'
aws_secret_access_key = 'fake_aws_access_key'
time = Time.new(2020, 7, 2, 7, 17, 58, '+00:00')
::Timecop.freeze(time)
base = ::AWS::SES::Base.new(
server: 'ec2.amazonaws.com',
signature_version: 4,
access_key_id: aws_access_key_id,
secret_access_key: aws_secret_access_key
)
assert_equal 'AWS4-HMAC-SHA256 Credential=fake_aws_key_id/20200702/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-date, Signature=c0465b36efd110b14a1c6dcca3e105085ed2bfb2a3fd3b3586cc459326ab43aa', base.get_aws_auth_param(time.httpdate, aws_secret_access_key, 'DescribeRegions', 4)
Timecop.return
end
def test_ses_authorization_header_v4_changed_host
aws_access_key_id = 'fake_aws_key_id'
aws_secret_access_key = 'fake_aws_access_key'
time = Time.new(2020, 7, 2, 7, 17, 58, '+00:00')
::Timecop.freeze(time)
base = ::AWS::SES::Base.new(
server: 'email.us-east-1.amazonaws.com',
signature_version: 4,
access_key_id: aws_access_key_id,
secret_access_key: aws_secret_access_key
)
assert_equal 'AWS4-HMAC-SHA256 Credential=fake_aws_key_id/20200702/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-date, Signature=b872601457070ab98e7038bdcd4dc1f5eab586ececf9908525474408b0740515', base.get_aws_auth_param(time.httpdate, aws_secret_access_key, 'DescribeRegions', 4)
Timecop.return
end
def test_ses_authorization_header_v4_changed_region
aws_access_key_id = 'fake_aws_key_id'
aws_secret_access_key = 'fake_aws_access_key'
time = Time.new(2020, 7, 2, 7, 17, 58, '+00:00')
::Timecop.freeze(time)
base = ::AWS::SES::Base.new(
server: 'email.us-east-1.amazonaws.com',
signature_version: 4,
access_key_id: aws_access_key_id,
secret_access_key: aws_secret_access_key,
region: 'eu-west-1'
)
assert_not_equal 'AWS4-HMAC-SHA256 Credential=fake_aws_key_id/20200702/us-east-1/ec2/aws4_request, SignedHeaders=host;x-amz-date, Signature=b872601457070ab98e7038bdcd4dc1f5eab586ececf9908525474408b0740515', base.get_aws_auth_param(time.httpdate, aws_secret_access_key, 'DescribeRegions', 4)
Timecop.return
end
end