View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2012-2026 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.jcabi.dynamo;
6   
7   import org.hamcrest.MatcherAssert;
8   import org.hamcrest.Matchers;
9   import org.junit.jupiter.api.Test;
10  import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
11  
12  /**
13   * Test case for {@link Credentials}.
14   * @since 0.1
15   */
16  final class CredentialsTest {
17  
18      @Test
19      void instantiatesAwsClient() {
20          final DynamoDbClient aws = new Credentials.Simple(
21              "ABABABABABABABABABEF",
22              "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCEF"
23          ).aws();
24          MatcherAssert.assertThat(
25              "Simple credentials did not create AWS client",
26              aws,
27              Matchers.notNullValue()
28          );
29          aws.close();
30      }
31  
32      @Test
33      void instantiatesAwsClientWithCustomRegion() {
34          final DynamoDbClient aws = new Credentials.Simple(
35              "ABABABABABABABABABAB",
36              "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE",
37              "eu-west-1"
38          ).aws();
39          MatcherAssert.assertThat(
40              "Simple credentials with region did not create AWS client",
41              aws,
42              Matchers.notNullValue()
43          );
44          aws.close();
45      }
46  
47      @Test
48      void formatsSimpleAsString() {
49          MatcherAssert.assertThat(
50              "Simple credentials did not format as region/key",
51              new Credentials.Simple(
52                  "t\u00e9st-k\u00e9y-000000000",
53                  "s\u00e9cr\u00e9t-0000000000000000000000000000",
54                  "us-\u00e9ast-1"
55              ).toString(),
56              Matchers.equalTo("us-\u00e9ast-1/t\u00e9st-k\u00e9y-000000000")
57          );
58      }
59  
60      @Test
61      void instantiatesAssumedClient() {
62          final DynamoDbClient aws = new Credentials.Assumed().aws();
63          MatcherAssert.assertThat(
64              "Assumed credentials did not create AWS client",
65              aws,
66              Matchers.notNullValue()
67          );
68          aws.close();
69      }
70  
71      @Test
72      void instantiatesAssumedClientWithRegion() {
73          final DynamoDbClient aws =
74              new Credentials.Assumed("eu-west-1").aws();
75          MatcherAssert.assertThat(
76              "Assumed credentials with region did not create AWS client",
77              aws,
78              Matchers.notNullValue()
79          );
80          aws.close();
81      }
82  
83      @Test
84      void formatsAssumedAsString() {
85          MatcherAssert.assertThat(
86              "Assumed credentials did not format as region",
87              new Credentials.Assumed("us-w\u00e9st-2").toString(),
88              Matchers.equalTo("us-w\u00e9st-2")
89          );
90      }
91  
92      @Test
93      void instantiatesDirectClient() {
94          final DynamoDbClient aws = new Credentials.Direct(
95              new Credentials.Simple(
96                  "ABABABABABABABABAB00",
97                  "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABC00"
98              ),
99              "http://localhost:8080"
100         ).aws();
101         MatcherAssert.assertThat(
102             "Direct credentials did not create AWS client",
103             aws,
104             Matchers.notNullValue()
105         );
106         aws.close();
107     }
108 
109     @Test
110     void instantiatesDirectClientWithPort() {
111         final DynamoDbClient aws = new Credentials.Direct(
112             new Credentials.Simple(
113                 "ABABABABABABABABAB01",
114                 "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABC01"
115             ),
116             12_345
117         ).aws();
118         MatcherAssert.assertThat(
119             "Direct credentials with port did not create AWS client",
120             aws,
121             Matchers.notNullValue()
122         );
123         aws.close();
124     }
125 
126     @Test
127     void formatsDirectAsString() {
128         MatcherAssert.assertThat(
129             "Direct credentials did not format with origin and endpoint",
130             new Credentials.Direct(
131                 new Credentials.Simple(
132                     "ABABABABABABABABAB02",
133                     "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABC02",
134                     "us-\u00e9ast-1"
135                 ),
136                 "http://loc\u00e4l:9999"
137             ).toString(),
138             Matchers.allOf(
139                 Matchers.containsString("us-\u00e9ast-1"),
140                 Matchers.containsString("http://loc\u00e4l:9999")
141             )
142         );
143     }
144 
145 }