21
21
import com .amazonaws .services .s3 .AmazonS3 ;
22
22
import com .amazonaws .services .s3 .model .CannedAccessControlList ;
23
23
import com .amazonaws .services .s3 .model .StorageClass ;
24
+
25
+ import org .elasticsearch .client .node .NodeClient ;
24
26
import org .elasticsearch .common .settings .Settings ;
27
+ import org .elasticsearch .common .settings .SettingsFilter ;
25
28
import org .elasticsearch .common .unit .ByteSizeUnit ;
26
29
import org .elasticsearch .common .unit .ByteSizeValue ;
27
30
import org .elasticsearch .common .xcontent .NamedXContentRegistry ;
28
31
import org .elasticsearch .env .Environment ;
29
32
import org .elasticsearch .plugins .Plugin ;
30
33
import org .elasticsearch .repositories .Repository ;
31
34
import org .elasticsearch .repositories .blobstore .ESBlobStoreRepositoryIntegTestCase ;
35
+ import org .elasticsearch .rest .AbstractRestChannel ;
36
+ import org .elasticsearch .rest .RestController ;
37
+ import org .elasticsearch .rest .RestRequest ;
38
+ import org .elasticsearch .rest .RestResponse ;
39
+ import org .elasticsearch .rest .action .admin .cluster .RestGetRepositoriesAction ;
40
+ import org .elasticsearch .test .rest .FakeRestRequest ;
32
41
import org .junit .AfterClass ;
33
42
import org .junit .BeforeClass ;
34
43
38
47
import java .util .Map ;
39
48
import java .util .concurrent .ConcurrentHashMap ;
40
49
import java .util .concurrent .ConcurrentMap ;
50
+ import java .util .concurrent .CountDownLatch ;
51
+ import java .util .concurrent .atomic .AtomicReference ;
41
52
42
53
import static java .util .Collections .emptyMap ;
43
54
import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertAcked ;
55
+ import static org .hamcrest .Matchers .containsString ;
56
+ import static org .hamcrest .Matchers .not ;
57
+ import static org .mockito .Mockito .mock ;
44
58
45
59
public class S3BlobStoreRepositoryTests extends ESBlobStoreRepositoryIntegTestCase {
46
60
@@ -81,7 +95,9 @@ protected void createTestRepository(final String name) {
81
95
.put (S3Repository .BUFFER_SIZE_SETTING .getKey (), bufferSize )
82
96
.put (S3Repository .SERVER_SIDE_ENCRYPTION_SETTING .getKey (), serverSideEncryption )
83
97
.put (S3Repository .CANNED_ACL_SETTING .getKey (), cannedACL )
84
- .put (S3Repository .STORAGE_CLASS_SETTING .getKey (), storageClass )));
98
+ .put (S3Repository .STORAGE_CLASS_SETTING .getKey (), storageClass )
99
+ .put (S3Repository .ACCESS_KEY_SETTING .getKey (), "not_used_but_this_is_a_secret" )
100
+ .put (S3Repository .SECRET_KEY_SETTING .getKey (), "not_used_but_this_is_a_secret" )));
85
101
}
86
102
87
103
@ Override
@@ -106,4 +122,32 @@ public synchronized AmazonS3 client(final Settings repositorySettings) {
106
122
}));
107
123
}
108
124
}
125
+
126
+ public void testInsecureRepositoryCredentials () throws Exception {
127
+ final String repositoryName = "testInsecureRepositoryCredentials" ;
128
+ createTestRepository (repositoryName );
129
+ final NodeClient nodeClient = internalCluster ().getInstance (NodeClient .class );
130
+ final RestGetRepositoriesAction getRepoAction = new RestGetRepositoriesAction (Settings .EMPTY , mock (RestController .class ),
131
+ internalCluster ().getInstance (SettingsFilter .class ));
132
+ final RestRequest getRepoRequest = new FakeRestRequest ();
133
+ getRepoRequest .params ().put ("repository" , repositoryName );
134
+ final CountDownLatch getRepoLatch = new CountDownLatch (1 );
135
+ final AtomicReference <AssertionError > getRepoError = new AtomicReference <>();
136
+ getRepoAction .handleRequest (getRepoRequest , new AbstractRestChannel (getRepoRequest , true ) {
137
+ @ Override
138
+ public void sendResponse (RestResponse response ) {
139
+ try {
140
+ assertThat (response .content ().utf8ToString (), not (containsString ("not_used_but_this_is_a_secret" )));
141
+ } catch (final AssertionError ex ) {
142
+ getRepoError .set (ex );
143
+ }
144
+ getRepoLatch .countDown ();
145
+ }
146
+ }, nodeClient );
147
+ getRepoLatch .await ();
148
+ if (getRepoError .get () != null ) {
149
+ throw getRepoError .get ();
150
+ }
151
+ }
152
+
109
153
}
0 commit comments