/
authFunctionNameExtractorTest.js
144 lines (126 loc) · 3.89 KB
/
authFunctionNameExtractorTest.js
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import authFunctionNameExtractor from '../../src/events/http/authFunctionNameExtractor.js'
describe('authFunctionNameExtractor', () => {
const dummyLogging = (arrayStore) => (message) => {
arrayStore.push(message)
}
describe('Unsupported auth method', () => {
const unsupportedAuthTest = (authorizer, expectedWarningMessage) => () => {
const endpoint = { authorizer }
const logStorage = []
const result = authFunctionNameExtractor(
endpoint,
dummyLogging(logStorage),
)
expect(result.unsupportedAuth).toEqual(true)
expect(logStorage.length).toEqual(1)
expect(logStorage[0]).toEqual(expectedWarningMessage)
}
describe('authorizer is a string', () => {
test(
'aws_iam',
unsupportedAuthTest(
'aws_iam',
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
test(
'AWS_IAM',
unsupportedAuthTest(
'AWS_IAM',
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
test(
'AwS_IaM',
unsupportedAuthTest(
'AwS_IaM',
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
})
describe('authorizer is an object', () => {
test(
'type: aws_iam',
unsupportedAuthTest(
{ type: 'aws_iam' },
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
test(
'type: AWS_IAM',
unsupportedAuthTest(
{ type: 'AWS_IAM' },
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
test(
'type: AwS_IaM',
unsupportedAuthTest(
{ type: 'AwS_IaM' },
'WARNING: Serverless Offline does not support the AWS_IAM authorization type',
),
)
test(
'arn is specified',
unsupportedAuthTest(
{ arn: 'anArnValue' },
'WARNING: Serverless Offline does not support non local authorizers (arn): anArnValue',
),
)
test(
'authorizerId is specified',
unsupportedAuthTest(
{ authorizerId: 'anAuthorizerId' },
'WARNING: Serverless Offline does not support non local authorizers (authorizerId): anAuthorizerId',
),
)
test('missing name attribute', () => {
unsupportedAuthTest(
{},
'WARNING: Serverless Offline supports local authorizers but authorizer name is missing',
)
})
})
describe('authorizer is not a string or oject', () => {
test(
'a number',
unsupportedAuthTest(
4,
'WARNING: Serverless Offline supports only local authorizers defined as string or object',
),
)
test(
'a boolean',
unsupportedAuthTest(
true,
'WARNING: Serverless Offline supports only local authorizers defined as string or object',
),
)
})
})
describe('supported auth method', () => {
const supportedAuthTest = (authorizer, expectedAuthorizerName) => () => {
const endpoint = { authorizer }
const logStorage = []
const result = authFunctionNameExtractor(
endpoint,
dummyLogging(logStorage),
)
expect(result.unsupportedAuth).toEqual(undefined)
expect(logStorage.length).toEqual(0)
expect(result.authorizerName).toEqual(expectedAuthorizerName)
}
describe('authorizer is a string', () => {
test(
'is a string anAuthorizerName',
supportedAuthTest('anAuthorizerName', 'anAuthorizerName'),
)
})
describe('authorizer is an object', () => {
test(
'named anAuthorizerName',
supportedAuthTest({ name: 'anAuthorizerName' }, 'anAuthorizerName'),
)
})
})
})