@@ -39,6 +39,16 @@ class DlqPushHandlerTest {
3939
4040 private static final String KEY_PATH_PREFIX_VALUE = "dlq/" ;
4141
42+ private static final String LEGACY_MD5_CHECKSUM = "legacy_md5_checksum" ;
43+
44+ private static final boolean LEGACY_MD5_CHECKSUM_TRUE = true ;
45+ private static final boolean LEGACY_MD5_CHECKSUM_FALSE = false ;
46+
47+ private static final String FORCE_PATH_STYLE = "force_path_style" ;
48+
49+ private static final boolean FORCE_PATH_STYLE_TRUE = true ;
50+ private static final boolean FORCE_PATH_STYLE_FALSE = false ;
51+
4252 private static final String PIPELINE_NAME = "log-pipeline" ;
4353
4454 private static final String DLQ_FILE = "local_dlq_file" ;
@@ -84,6 +94,90 @@ void perform_for_dlq_s3_success() throws IOException {
8494 verify (dlqWriter ).write (anyList (), anyString (), anyString ());
8595 }
8696
97+ @ Test
98+ void perform_for_dlq_s3_success_legacymd5checksum_true () throws IOException {
99+ Map <String , Object > props = new HashMap <>();
100+ props .put (BUCKET ,BUCKET_VALUE );
101+ props .put (KEY_PATH_PREFIX ,KEY_PATH_PREFIX_VALUE );
102+ props .put (LEGACY_MD5_CHECKSUM ,LEGACY_MD5_CHECKSUM_TRUE );
103+
104+ when (pluginFactory .loadPlugin (any (Class .class ), any (PluginSetting .class ))).thenReturn (dlqProvider );
105+
106+ when (dlqProvider .getDlqWriter (anyString ())).thenReturn (Optional .of (dlqWriter ));
107+ doNothing ().when (dlqWriter ).write (anyList (), anyString (), anyString ());
108+ SnsSinkFailedDlqData failedDlqData = new SnsSinkFailedDlqData ("topic" ,"message" ,0 );
109+ dlqPushHandler = new DlqPushHandler (null ,pluginFactory , BUCKET_VALUE , ROLE , REGION ,KEY_PATH_PREFIX_VALUE ,LEGACY_MD5_CHECKSUM_TRUE );
110+
111+ PluginSetting pluginSetting = new PluginSetting (S3_PLUGIN_NAME , props );
112+ pluginSetting .setPipelineName (PIPELINE_NAME );
113+ dlqPushHandler .perform (pluginSetting , failedDlqData );
114+ Assertions .assertNotNull (pluginFactory );
115+ verify (dlqWriter ).write (anyList (), anyString (), anyString ());
116+ }
117+
118+ @ Test
119+ void perform_for_dlq_s3_success_legacymd5checksum_false () throws IOException {
120+ Map <String , Object > props = new HashMap <>();
121+ props .put (BUCKET ,BUCKET_VALUE );
122+ props .put (KEY_PATH_PREFIX ,KEY_PATH_PREFIX_VALUE );
123+ props .put (LEGACY_MD5_CHECKSUM ,LEGACY_MD5_CHECKSUM_FALSE );
124+
125+ when (pluginFactory .loadPlugin (any (Class .class ), any (PluginSetting .class ))).thenReturn (dlqProvider );
126+
127+ when (dlqProvider .getDlqWriter (anyString ())).thenReturn (Optional .of (dlqWriter ));
128+ doNothing ().when (dlqWriter ).write (anyList (), anyString (), anyString ());
129+ SnsSinkFailedDlqData failedDlqData = new SnsSinkFailedDlqData ("topic" ,"message" ,0 );
130+ dlqPushHandler = new DlqPushHandler (null ,pluginFactory , BUCKET_VALUE , ROLE , REGION ,KEY_PATH_PREFIX_VALUE ,LEGACY_MD5_CHECKSUM_FALSE );
131+
132+ PluginSetting pluginSetting = new PluginSetting (S3_PLUGIN_NAME , props );
133+ pluginSetting .setPipelineName (PIPELINE_NAME );
134+ dlqPushHandler .perform (pluginSetting , failedDlqData );
135+ Assertions .assertNotNull (pluginFactory );
136+ verify (dlqWriter ).write (anyList (), anyString (), anyString ());
137+ }
138+
139+ @ Test
140+ void perform_for_dlq_s3_success_forcepathstyle_true () throws IOException {
141+ Map <String , Object > props = new HashMap <>();
142+ props .put (BUCKET ,BUCKET_VALUE );
143+ props .put (KEY_PATH_PREFIX ,KEY_PATH_PREFIX_VALUE );
144+ props .put (FORCE_PATH_STYLE ,FORCE_PATH_STYLE_TRUE );
145+
146+ when (pluginFactory .loadPlugin (any (Class .class ), any (PluginSetting .class ))).thenReturn (dlqProvider );
147+
148+ when (dlqProvider .getDlqWriter (anyString ())).thenReturn (Optional .of (dlqWriter ));
149+ doNothing ().when (dlqWriter ).write (anyList (), anyString (), anyString ());
150+ SnsSinkFailedDlqData failedDlqData = new SnsSinkFailedDlqData ("topic" ,"message" ,0 );
151+ dlqPushHandler = new DlqPushHandler (null ,pluginFactory , BUCKET_VALUE , ROLE , REGION ,KEY_PATH_PREFIX_VALUE ,FORCE_PATH_STYLE_TRUE );
152+
153+ PluginSetting pluginSetting = new PluginSetting (S3_PLUGIN_NAME , props );
154+ pluginSetting .setPipelineName (PIPELINE_NAME );
155+ dlqPushHandler .perform (pluginSetting , failedDlqData );
156+ Assertions .assertNotNull (pluginFactory );
157+ verify (dlqWriter ).write (anyList (), anyString (), anyString ());
158+ }
159+
160+ @ Test
161+ void perform_for_dlq_s3_success_forcepathstyle_false () throws IOException {
162+ Map <String , Object > props = new HashMap <>();
163+ props .put (BUCKET ,BUCKET_VALUE );
164+ props .put (KEY_PATH_PREFIX ,KEY_PATH_PREFIX_VALUE );
165+ props .put (FORCE_PATH_STYLE ,FORCE_PATH_STYLE_FALSE );
166+
167+ when (pluginFactory .loadPlugin (any (Class .class ), any (PluginSetting .class ))).thenReturn (dlqProvider );
168+
169+ when (dlqProvider .getDlqWriter (anyString ())).thenReturn (Optional .of (dlqWriter ));
170+ doNothing ().when (dlqWriter ).write (anyList (), anyString (), anyString ());
171+ SnsSinkFailedDlqData failedDlqData = new SnsSinkFailedDlqData ("topic" ,"message" ,0 );
172+ dlqPushHandler = new DlqPushHandler (null ,pluginFactory , BUCKET_VALUE , ROLE , REGION ,KEY_PATH_PREFIX_VALUE ,FORCE_PATH_STYLE_FALSE );
173+
174+ PluginSetting pluginSetting = new PluginSetting (S3_PLUGIN_NAME , props );
175+ pluginSetting .setPipelineName (PIPELINE_NAME );
176+ dlqPushHandler .perform (pluginSetting , failedDlqData );
177+ Assertions .assertNotNull (pluginFactory );
178+ verify (dlqWriter ).write (anyList (), anyString (), anyString ());
179+ }
180+
87181
88182 @ Test
89183 void perform_for_dlq_local_file_success (){
0 commit comments