Skip to content

Better architecture - Lab 1

1. Create the RestApiClientBuilder class

Steps

  1. In the com.workshop package create a Java class named RestApiClientBuilder
  2. Add the following code inside it
    import io.restassured.builder.RequestSpecBuilder;
    
    import java.util.function.Function;
    import java.util.function.Supplier;
    
    public class RestApiClientBuilder {
    
        public <T> T build(Function<Supplier<RequestSpecBuilder>, T> clientCreator) {
            Supplier<RequestSpecBuilder> requestSpecBuilderSupplier = () -> new RequestSpecBuilder()
                    .addRequestSpecification(
                            new RequestSpecBuilder()
                                    .setBaseUri("http://localhost")
                                    .setPort(8088)
                                    .build());
    
            return clientCreator.apply(requestSpecBuilderSupplier);
        }
    }
    

Expected results

  • RestApiClientBuilder class created... don't panic, we will use it later!

2. Create the RestrictionApiClient class

Steps

  1. In the com.workshop package in the src/main/java folder, create a package called api.client
  2. Create a Java class named RestrictionsApiClient in the com.workshop.api.client package
  3. Add the following code inside it
    import com.eliasnogueira.credit.api.RestrictionsApi;
    import io.restassured.response.Response;
    import com.workshop.api.RestApiClientBuilder;
    
    import java.util.function.Function;
    
    public class RestrictionsApiClient {
    
        private RestrictionsApi restrictionsApi = new RestApiClientBuilder().build(RestrictionsApi::restrictions);
    
        public Response queryCpf(String cpf) {
            return restrictionsApi.oneUsingGET().cpfPath(cpf).execute(Function.identity());
        }
    }
    

Expected results

  • RestrictionsApiClient class created... don't panic, we will use it later!

3. Create the RestrictionApiService class

Steps

  1. In the com.workshop package in the src/main/java folder, create a package called api.service
  2. Create a Java class named RestrictionsApiService in the com.workshop.api.service package
  3. Add the following code inside it
    import com.eliasnogueira.credit.model.MessageV1;
    import org.apache.http.HttpStatus;
    import com.workshop.api.client.RestrictionsApiClient;
    
    public class RestrictionsApiService {
    
        private RestrictionsApiClient restrictionsApiClient = new RestrictionsApiClient();
    
        /**
        * Query CPF without a restriction
        */
        public boolean queryCpf(String cpf) {
            restrictionsApiClient.queryCpf(cpf).then().statusCode(HttpStatus.SC_NOT_FOUND);
            return true;
        }
    
        public MessageV1 queryCpfWithRestriction(String cpf) {
            return restrictionsApiClient.queryCpf(cpf).then().
                    statusCode(HttpStatus.SC_OK).extract().as(MessageV1.class);
        }
    
    }
    

Expected results

  • RestrictionsApiService class created... don't panic, we will use it later!