This repository was archived by the owner on Jun 4, 2019. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +53
-3
lines changed Expand file tree Collapse file tree 3 files changed +53
-3
lines changed Original file line number Diff line number Diff line change 26
26
"url" : " https://github.com/Jimdo/serverless-dynamodb-ttl/issues"
27
27
},
28
28
"homepage" : " https://github.com/Jimdo/serverless-dynamodb-ttl#readme" ,
29
- "dependencies" : {},
29
+ "dependencies" : {
30
+ "semver-compare" : " ^1.0.0"
31
+ },
30
32
"standard" : {
31
33
"envs" : [
32
34
" node" ,
Original file line number Diff line number Diff line change 2
2
3
3
const assert = require ( 'assert' )
4
4
const util = require ( 'util' )
5
+ const cmp = require ( 'semver-compare' )
6
+
7
+ const MINIMUM_COMPATIBLE_AWSSDK_VERSION = '2.21.0'
5
8
6
9
class Plugin {
7
10
constructor ( serverless , options ) {
8
11
this . serverless = serverless
9
- this . options = options || { }
10
12
this . provider = serverless . getProvider ( 'aws' )
13
+ this . options = options || { }
11
14
12
15
this . hooks = {
13
16
'after:deploy:deploy' : this . afterDeploy . bind ( this )
@@ -21,6 +24,11 @@ class Plugin {
21
24
assert ( this . serverless . service . provider . name , 'Invalid serverless configuration' )
22
25
assert ( this . serverless . service . provider . name === 'aws' , 'Only supported for AWS provider' )
23
26
27
+ assert (
28
+ cmp ( this . provider . sdk . VERSION , MINIMUM_COMPATIBLE_AWSSDK_VERSION ) > - 1 ,
29
+ util . format ( 'Use `aws-sdk` version %s or newer' , MINIMUM_COMPATIBLE_AWSSDK_VERSION )
30
+ )
31
+
24
32
assert ( this . options && ! this . options . noDeploy , 'Used --noDeploy flag' )
25
33
assert ( this . list ( ) . constructor === Array , 'Invalid configuration found' )
26
34
assert ( this . list ( ) . length > 0 , 'No configuration found' )
Original file line number Diff line number Diff line change @@ -6,7 +6,10 @@ const Plugin = require('../')
6
6
describe ( 'Plugin' , ( ) => {
7
7
let getProvider = null
8
8
let provider = {
9
- request : ( ) => true
9
+ request : ( ) => true ,
10
+ sdk : {
11
+ VERSION : '2.21.0'
12
+ }
10
13
}
11
14
let providerMock = null
12
15
@@ -114,6 +117,43 @@ describe('Plugin', () => {
114
117
)
115
118
} )
116
119
120
+ it ( 'Skips for unsupported aws-sdk versions' , ( ) => {
121
+ let log = jest . fn ( )
122
+
123
+ let unsupportedProvider = {
124
+ request : ( ) => true ,
125
+ sdk : {
126
+ VERSION : '2.20.0'
127
+ }
128
+ }
129
+
130
+ let unsupportedProviderMock = sinon . mock ( unsupportedProvider )
131
+ let unsupportedGetProvider = sinon . stub ( ) . returns ( unsupportedProvider )
132
+
133
+ unsupportedProviderMock . expects ( 'request' ) . never ( )
134
+ const config = {
135
+ cli : { log } ,
136
+ region : 'us-east-1' ,
137
+ version : '1.13.1' ,
138
+ service : {
139
+ provider : {
140
+ name : 'aws'
141
+ } ,
142
+ custom : {
143
+ dynamodb : { ttl : [ { table : 'my-table-1' , field : 'my-field-1' } ] }
144
+ }
145
+ } ,
146
+ getProvider : unsupportedGetProvider
147
+ }
148
+
149
+ return new Plugin ( config , { region : 'eu-west-1' } ) . afterDeploy ( ) . then (
150
+ ( ) => {
151
+ expect ( log ) . toBeCalledWith ( 'Skipping TTL setting(s) for DynamoDB: Use `aws-sdk` version 2.21.0 or newer!' )
152
+ unsupportedProviderMock . restore ( )
153
+ }
154
+ )
155
+ } )
156
+
117
157
it ( 'Skips when no custom.dynamodb.ttl is found' , ( ) => {
118
158
let log = jest . fn ( )
119
159
You can’t perform that action at this time.
0 commit comments