2828import java .util .List ;
2929import java .util .stream .Stream ;
3030
31+ import com .cloud .exception .InvalidParameterValueException ;
32+ import com .cloud .utils .EncryptionUtil ;
33+ import com .cloud .utils .net .NetUtils ;
3134import org .apache .cloudstack .storage .command .DeleteCommand ;
3235import org .apache .cloudstack .storage .command .QuerySnapshotZoneCopyAnswer ;
3336import org .apache .cloudstack .storage .command .QuerySnapshotZoneCopyCommand ;
@@ -51,6 +54,22 @@ public class NfsSecondaryStorageResourceTest {
5154 @ Spy
5255 private NfsSecondaryStorageResource resource ;
5356
57+ private static final String HOSTNAME = "hostname" ;
58+
59+ private static final String UUID = "uuid" ;
60+
61+ private static final String METADATA = "metadata" ;
62+
63+ private static final String TIMEOUT = "timeout" ;
64+
65+ private static final String PSK = "6HyGMx9Vat7rZw1pMZrM4OlD4FFwLUPznTsFqVFSOIvk0mAWMRCVZ6UCq42gZvhp" ;
66+
67+ private static final String PROTOCOL = NetUtils .HTTP_PROTO ;
68+
69+ private static final String EXPECTED_SIGNATURE = "expectedSignature" ;
70+
71+ private static final String COMPUTED_SIGNATURE = "computedSignature" ;
72+
5473 @ Test
5574 public void testSwiftWriteMetadataFile () throws Exception {
5675 String metaFileName = "test_metadata_file" ;
@@ -141,4 +160,86 @@ public void testExecuteQuerySnapshotZoneCopyCommand() {
141160 Assert .assertEquals (dir + File .separator + fileName + ".ovf" , result .get (1 ));
142161 }
143162 }
163+
164+ private void prepareForValidatePostUploadRequestSignatureTests (MockedStatic <EncryptionUtil > encryptionUtilMock ) {
165+ Mockito .doReturn (PROTOCOL ).when (resource ).getUploadProtocol ();
166+ Mockito .doReturn (PSK ).when (resource ).getPostUploadPSK ();
167+ encryptionUtilMock .when (() -> EncryptionUtil .generateSignature (Mockito .anyString (), Mockito .anyString ())).thenReturn (COMPUTED_SIGNATURE );
168+ String fullUrl = String .format ("%s://%s/upload/%s" , PROTOCOL , HOSTNAME , UUID );
169+ String data = String .format ("%s%s%s" , METADATA , fullUrl , TIMEOUT );
170+ encryptionUtilMock .when (() -> EncryptionUtil .generateSignature (data , PSK )).thenReturn (EXPECTED_SIGNATURE );
171+ }
172+
173+ @ Test (expected = InvalidParameterValueException .class )
174+ public void validatePostUploadRequestSignatureTestThrowExceptionWhenProtocolDiffers () {
175+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
176+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
177+ Mockito .doReturn (NetUtils .HTTPS_PROTO ).when (resource ).getUploadProtocol ();
178+
179+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , HOSTNAME , UUID , METADATA , TIMEOUT );
180+ }
181+ }
182+
183+ @ Test (expected = InvalidParameterValueException .class )
184+ public void validatePostUploadRequestSignatureTestThrowExceptionWhenHostnameDiffers () {
185+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
186+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
187+
188+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , "test" , UUID , METADATA , TIMEOUT );
189+ }
190+ }
191+
192+ @ Test (expected = InvalidParameterValueException .class )
193+ public void validatePostUploadRequestSignatureTestThrowExceptionWhenUuidDiffers () {
194+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
195+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
196+
197+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , HOSTNAME , "test" , METADATA , TIMEOUT );
198+ }
199+ }
200+
201+ @ Test (expected = InvalidParameterValueException .class )
202+ public void validatePostUploadRequestSignatureTestThrowExceptionWhenMetadataDiffers () {
203+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
204+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
205+
206+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , HOSTNAME , UUID , "test" , TIMEOUT );
207+ }
208+ }
209+
210+ @ Test (expected = InvalidParameterValueException .class )
211+ public void validatePostUploadRequestSignatureTestThrowExceptionWhenTimeoutDiffers () {
212+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
213+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
214+
215+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , HOSTNAME , UUID , METADATA , "test" );
216+ }
217+ }
218+
219+ @ Test
220+ public void validatePostUploadRequestSignatureTestSuccessWhenDataIsTheSame () {
221+ try (MockedStatic <EncryptionUtil > encryptionUtilMock = Mockito .mockStatic (EncryptionUtil .class )) {
222+ prepareForValidatePostUploadRequestSignatureTests (encryptionUtilMock );
223+
224+ resource .validatePostUploadRequestSignature (EXPECTED_SIGNATURE , HOSTNAME , UUID , METADATA , TIMEOUT );
225+ }
226+ }
227+
228+ @ Test
229+ public void getUploadProtocolTestReturnHttpsWhenUseHttpsToUploadIsTrue () {
230+ Mockito .doReturn (true ).when (resource ).useHttpsToUpload ();
231+
232+ String result = resource .getUploadProtocol ();
233+
234+ Assert .assertEquals (NetUtils .HTTPS_PROTO , result );
235+ }
236+
237+ @ Test
238+ public void getUploadProtocolTestReturnHttpWhenUseHttpsToUploadIsFalse () {
239+ Mockito .doReturn (false ).when (resource ).useHttpsToUpload ();
240+
241+ String result = resource .getUploadProtocol ();
242+
243+ Assert .assertEquals (NetUtils .HTTP_PROTO , result );
244+ }
144245}
0 commit comments