diff --git a/pom.xml b/pom.xml index b2254166..b7d89ab9 100755 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,50 @@ 11 + + + org.jacoco + jacoco-maven-plugin + 0.8.4 + + + pre-test + + prepare-agent + + + surefireArgLine + + + + post-unit-test + test + + report + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M7 + + + @{surefireArgLine} + 1 + + + + default-test + test + + test + + + + @@ -131,6 +175,34 @@ log4j-1.2-api ${log4j2.version} + + org.junit.jupiter + junit-jupiter-engine + ${jupiter.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + org.springframework.boot + spring-boot-starter-test + ${spring.boot.data.jpa} + test + + + org.junit.vintage + junit-vintage-engine + + + org.apache.logging.log4j + log4j-to-slf4j + + + @@ -151,6 +223,8 @@ 2.5.0 2.6 4.5.13 + 5.8.1 + 4.6.1 diff --git a/services/resource-service/server/pom.xml b/services/resource-service/server/pom.xml index 24f2ab6c..4d81b160 100644 --- a/services/resource-service/server/pom.xml +++ b/services/resource-service/server/pom.xml @@ -59,6 +59,12 @@ grpc-services 1.25.0 + + io.grpc + grpc-testing + 1.25.0 + test + org.springframework.boot spring-boot-starter-data-jpa diff --git a/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java b/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java new file mode 100644 index 00000000..280f46cd --- /dev/null +++ b/services/resource-service/server/src/test/java/org.apache.airavata.mft.resource.server.handler/S3ServiceHandlerTest.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.airavata.mft.resource.server.handler; + + +import io.grpc.internal.testing.StreamRecorder; +import org.apache.airavata.mft.resource.server.backend.ResourceBackend; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3Storage; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.when; + +@RunWith( MockitoJUnitRunner.class ) +class S3ServiceHandlerTest +{ + + @InjectMocks + private S3ServiceHandler s3ServiceHandler; + + @Mock + private ResourceBackend backend; + + + @BeforeEach + void setUp() + { + s3ServiceHandler = new S3ServiceHandler(); + MockitoAnnotations.openMocks( this ); + } + + @Test + void listS3Storage() throws Exception + { + + S3StorageListRequest request1 = S3StorageListRequest.newBuilder().setOffset( 0 ).setLimit( 10 ).build(); + when( backend.listS3Storage( request1 ) ).thenReturn( S3StorageListResponse.newBuilder().addStorages( 0, + S3Storage.newBuilder().setStorageId( "1" ).setBucketName( "testBkt" ).setName( "testJCV" ) + .setRegion( "usa-east" ) ).build() ); + + S3StorageListRequest request = S3StorageListRequest.newBuilder().setOffset( 0 ).setLimit( 10 ).build(); + StreamRecorder responseOb = StreamRecorder.create(); + s3ServiceHandler.listS3Storage( request, responseOb ); + if ( !responseOb.awaitCompletion( 5, TimeUnit.SECONDS ) ) + { + System.out.println( "Time out !" ); + fail(); + } + List results = responseOb.getValues(); + assertEquals( 1, results.size() ); + S3StorageListResponse response = results.get( 0 ); + assertEquals( S3StorageListResponse.newBuilder().addStorages( 0, + S3Storage.newBuilder().setStorageId( "1" ).setBucketName( "testBkt" ).setName( "testJCV" ) + .setRegion( "usa-east" ) ).build(), response ); + } + +} \ No newline at end of file diff --git a/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java b/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java new file mode 100644 index 00000000..51a916ae --- /dev/null +++ b/services/resource-service/server/src/test/java/org/apache/airavata/mft/resource/server/backend/sql/SQLResourceBackendTest.java @@ -0,0 +1,75 @@ +package org.apache.airavata.mft.resource.server.backend.sql; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.apache.airavata.mft.resource.server.backend.sql.entity.S3StorageEntity; +import org.apache.airavata.mft.resource.server.backend.sql.repository.S3StorageRepository; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3Storage; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageGetRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListRequest; +import org.apache.airavata.mft.resource.stubs.s3.storage.S3StorageListResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.data.domain.PageRequest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; + +@RunWith( MockitoJUnitRunner.class ) +class SQLResourceBackendTest +{ + @InjectMocks + private SQLResourceBackend sqlResourceBackend; + @Mock + private S3StorageRepository s3StorageRepository; + + @BeforeEach + void setUp() + { + MockitoAnnotations.openMocks( this ); + } + + @Test + void listS3Storage() throws Exception + { + List storageList = new ArrayList<>(); + S3StorageEntity storage = new S3StorageEntity(); + storage.setStorageId( String.valueOf( 1 ) ); + storage.setBucketName( "testBucket" ); + storage.setName( "Bucket" ); + storage.setRegion( "usa-east" ); + storage.setEndpoint( "aws.com" ); + storage.setUseTLS( true ); + storageList.add( storage ); + when( s3StorageRepository.findAll( PageRequest.of( 1, 5 ) ) ).thenReturn( storageList ); + S3StorageListRequest request = S3StorageListRequest.newBuilder().setLimit( 5 ).setOffset( 1 ).build(); + S3StorageListResponse response = sqlResourceBackend.listS3Storage( request ); + assertTrue( response.getStoragesList().size() > 0 ); + } + + @Test + void getS3Storage() throws Exception + { + S3StorageEntity storage = new S3StorageEntity(); + storage.setStorageId( String.valueOf( 1 ) ); + storage.setBucketName( "testBucket" ); + storage.setName( "Bucket" ); + storage.setRegion( "usa-east" ); + storage.setEndpoint( "aws.com" ); + storage.setUseTLS( true ); + when( s3StorageRepository.findById( "1" ) ).thenReturn( Optional.of( storage ) ); + S3StorageGetRequest request = S3StorageGetRequest.newBuilder().setStorageId( "1" ).build(); + Optional response = sqlResourceBackend.getS3Storage( request ); + assertTrue( response.isPresent() ); + assertEquals( "1", ( (S3Storage) response.get() ).getStorageId() ); + } + +} \ No newline at end of file