2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.persistence.dynamodb.internal;
15 import static org.junit.jupiter.api.Assertions.*;
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;
26 import org.eclipse.jdt.annotation.NonNullByDefault;
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.api.io.TempDir;
30 import com.amazonaws.regions.Regions;
34 * @author Sami Salonen - Initial contribution
38 public class DynamoDBConfigTest {
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];
48 return Collections.unmodifiableMap(config);
51 public @TempDir @NonNullByDefault({}) File folder;
54 public void testEmpty() throws Exception {
55 assertNull(DynamoDBConfig.fromConfig(new HashMap<>()));
59 public void testInvalidRegion() throws Exception {
60 assertNull(DynamoDBConfig.fromConfig(Collections.singletonMap("region", "foobie")));
64 public void testRegionOnly() throws Exception {
65 assertNull(DynamoDBConfig.fromConfig(Collections.singletonMap("region", "eu-west-1")));
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());
84 public void testRegionWithProfilesConfigFile() throws Exception {
85 Path credsFile = Files.createFile(Paths.get(folder.getPath(), "creds"));
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);
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());
103 public void testEmptyConfiguration() throws Exception {
104 assertNull(DynamoDBConfig.fromConfig(mapFrom()));
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);
115 assertNull(DynamoDBConfig.fromConfig(mapFrom("region", "eu-west-1", "profilesConfigFile",
116 credsFile.toFile().getAbsolutePath(), "profile", "fooprofile")));
120 public void testRegionWithProfilesConfigFileMissingProfile() throws Exception {
121 Path credsFile = Files.createFile(Paths.get(folder.getPath(), "creds"));
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);
127 assertNull(DynamoDBConfig.fromConfig(
128 mapFrom("region", "eu-west-1", "profilesConfigFile", credsFile.toAbsolutePath().toString())));
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());
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());
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());
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());
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());
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());