]> git.basschouten.com Git - openhab-addons.git/blob
7486592cf3a558279e0e4bf8000aa7e44b5ed118
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.persistence.dynamodb.internal;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import java.io.File;
18 import java.nio.file.Files;
19 import java.nio.file.Path;
20 import java.nio.file.Paths;
21 import java.nio.file.StandardOpenOption;
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.eclipse.jdt.annotation.NonNullByDefault;
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.api.io.TempDir;
29
30 import com.amazonaws.regions.Regions;
31
32 /**
33  *
34  * @author Sami Salonen - Initial contribution
35  *
36  */
37 @NonNullByDefault
38 public class DynamoDBConfigTest {
39
40     private static Map<String, Object> mapFrom(String... args) {
41         assert args.length % 2 == 0;
42         Map<String, String> config = new HashMap<>();
43         for (int i = 1; i < args.length; i++) {
44             String key = args[i - 1];
45             String val = args[i];
46             config.put(key, val);
47         }
48         return Collections.unmodifiableMap(config);
49     }
50
51     public @TempDir @NonNullByDefault({}) File folder;
52
53     @Test
54     public void testEmpty() throws Exception {
55         assertNull(DynamoDBConfig.fromConfig(new HashMap<>()));
56     }
57
58     @Test
59     public void testInvalidRegion() throws Exception {
60         assertNull(DynamoDBConfig.fromConfig(Collections.singletonMap("region", "foobie")));
61     }
62
63     @Test
64     public void testRegionOnly() throws Exception {
65         assertNull(DynamoDBConfig.fromConfig(Collections.singletonMap("region", "eu-west-1")));
66     }
67
68     @Test
69     public void testRegionWithAccessKeys() throws Exception {
70         DynamoDBConfig fromConfig = DynamoDBConfig
71                 .fromConfig(mapFrom("region", "eu-west-1", "accessKey", "access1", "secretKey", "secret1"));
72         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
73         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
74         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
75         assertEquals("openhab-", fromConfig.getTablePrefix());
76         assertEquals(true, fromConfig.isCreateTable());
77         assertEquals(1, fromConfig.getReadCapacityUnits());
78         assertEquals(1, fromConfig.getWriteCapacityUnits());
79         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
80         assertEquals(1000, fromConfig.getBufferSize());
81     }
82
83     @Test
84     public void testRegionWithProfilesConfigFile() throws Exception {
85         Path credsFile = Files.createFile(Paths.get(folder.getPath(), "creds"));
86         Files.write(
87                 credsFile, ("[fooprofile]\n" + "aws_access_key_id=testAccessKey\n"
88                         + "aws_secret_access_key=testSecretKey\n" + "aws_session_token=testSessionToken\n").getBytes(),
89                 StandardOpenOption.TRUNCATE_EXISTING);
90
91         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "profilesConfigFile",
92                 credsFile.toAbsolutePath().toString(), "profile", "fooprofile"));
93         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
94         assertEquals("openhab-", fromConfig.getTablePrefix());
95         assertEquals(true, fromConfig.isCreateTable());
96         assertEquals(1, fromConfig.getReadCapacityUnits());
97         assertEquals(1, fromConfig.getWriteCapacityUnits());
98         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
99         assertEquals(1000, fromConfig.getBufferSize());
100     }
101
102     @Test
103     public void testEmptyConfiguration() throws Exception {
104         assertNull(DynamoDBConfig.fromConfig(mapFrom()));
105     }
106
107     @Test
108     public void testRegionWithInvalidProfilesConfigFile() throws Exception {
109         Path credsFile = Files.createFile(Paths.get(folder.getPath(), "creds"));
110         Files.write(credsFile,
111                 ("[fooprofile]\n" + "aws_access_key_idINVALIDKEY=testAccessKey\n"
112                         + "aws_secret_access_key=testSecretKey\n" + "aws_session_token=testSessionToken\n").getBytes(),
113                 StandardOpenOption.TRUNCATE_EXISTING);
114
115         assertNull(DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "profilesConfigFile",
116                 credsFile.toFile().getAbsolutePath(), "profile", "fooprofile")));
117     }
118
119     @Test
120     public void testRegionWithProfilesConfigFileMissingProfile() throws Exception {
121         Path credsFile = Files.createFile(Paths.get(folder.getPath(), "creds"));
122         Files.write(
123                 credsFile, ("[fooprofile]\n" + "aws_access_key_id=testAccessKey\n"
124                         + "aws_secret_access_key=testSecretKey\n" + "aws_session_token=testSessionToken\n").getBytes(),
125                 StandardOpenOption.TRUNCATE_EXISTING);
126
127         assertNull(DynamoDBConfig.fromConfig(
128                 mapFrom("region", "eu-west-1", "profilesConfigFile", credsFile.toAbsolutePath().toString())));
129     }
130
131     @Test
132     public void testRegionWithAccessKeysWithPrefix() throws Exception {
133         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "accessKey", "access1",
134                 "secretKey", "secret1", "tablePrefix", "foobie-"));
135         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
136         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
137         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
138         assertEquals("foobie-", fromConfig.getTablePrefix());
139         assertEquals(true, fromConfig.isCreateTable());
140         assertEquals(1, fromConfig.getReadCapacityUnits());
141         assertEquals(1, fromConfig.getWriteCapacityUnits());
142         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
143         assertEquals(1000, fromConfig.getBufferSize());
144     }
145
146     @Test
147     public void testRegionWithAccessKeysWithPrefixWithCreateTable() throws Exception {
148         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(
149                 mapFrom("region", "eu-west-1", "accessKey", "access1", "secretKey", "secret1", "createTable", "false"));
150         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
151         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
152         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
153         assertEquals("openhab-", fromConfig.getTablePrefix());
154         assertEquals(false, fromConfig.isCreateTable());
155         assertEquals(1, fromConfig.getReadCapacityUnits());
156         assertEquals(1, fromConfig.getWriteCapacityUnits());
157         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
158         assertEquals(1000, fromConfig.getBufferSize());
159     }
160
161     @Test
162     public void testRegionWithAccessKeysWithPrefixWithReadCapacityUnits() throws Exception {
163         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "accessKey", "access1",
164                 "secretKey", "secret1", "readCapacityUnits", "5"));
165         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
166         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
167         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
168         assertEquals("openhab-", fromConfig.getTablePrefix());
169         assertEquals(true, fromConfig.isCreateTable());
170         assertEquals(5, fromConfig.getReadCapacityUnits());
171         assertEquals(1, fromConfig.getWriteCapacityUnits());
172         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
173         assertEquals(1000, fromConfig.getBufferSize());
174     }
175
176     @Test
177     public void testRegionWithAccessKeysWithPrefixWithWriteCapacityUnits() throws Exception {
178         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "accessKey", "access1",
179                 "secretKey", "secret1", "writeCapacityUnits", "5"));
180         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
181         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
182         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
183         assertEquals("openhab-", fromConfig.getTablePrefix());
184         assertEquals(true, fromConfig.isCreateTable());
185         assertEquals(1, fromConfig.getReadCapacityUnits());
186         assertEquals(5, fromConfig.getWriteCapacityUnits());
187         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
188         assertEquals(1000, fromConfig.getBufferSize());
189     }
190
191     @Test
192     public void testRegionWithAccessKeysWithPrefixWithReadWriteCapacityUnits() throws Exception {
193         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "accessKey", "access1",
194                 "secretKey", "secret1", "readCapacityUnits", "3", "writeCapacityUnits", "5"));
195         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
196         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
197         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
198         assertEquals("openhab-", fromConfig.getTablePrefix());
199         assertEquals(true, fromConfig.isCreateTable());
200         assertEquals(3, fromConfig.getReadCapacityUnits());
201         assertEquals(5, fromConfig.getWriteCapacityUnits());
202         assertEquals(1000L, fromConfig.getBufferCommitIntervalMillis());
203         assertEquals(1000, fromConfig.getBufferSize());
204     }
205
206     @Test
207     public void testRegionWithAccessKeysWithPrefixWithReadWriteCapacityUnitsWithBufferSettings() throws Exception {
208         DynamoDBConfig fromConfig = DynamoDBConfig.fromConfig(
209                 mapFrom("region", "eu-west-1", "accessKey", "access1", "secretKey", "secret1", "readCapacityUnits", "3",
210                         "writeCapacityUnits", "5", "bufferCommitIntervalMillis", "501", "bufferSize", "112"));
211         assertEquals(Regions.EU_WEST_1, fromConfig.getRegion());
212         assertEquals("access1", fromConfig.getCredentials().getAWSAccessKeyId());
213         assertEquals("secret1", fromConfig.getCredentials().getAWSSecretKey());
214         assertEquals("openhab-", fromConfig.getTablePrefix());
215         assertEquals(true, fromConfig.isCreateTable());
216         assertEquals(3, fromConfig.getReadCapacityUnits());
217         assertEquals(5, fromConfig.getWriteCapacityUnits());
218         assertEquals(501L, fromConfig.getBufferCommitIntervalMillis());
219         assertEquals(112, fromConfig.getBufferSize());
220     }
221 }