Test an outgoing HTTP request in Spring

Viewed 995

I feel very sorry to ask that question because I am pretty sure that this was already asked. But by searching here or with google I always land at sites where REST services with incoming requests are tested.

In my case I have a method that sends a request to a server. I want to test if that request is correct. I use java and spring boot. Every time I test that, the request is send to the server. Can I intercept that?

 public void buy(double price) {
        final String timestamp = String.valueOf(System.currentTimeMillis());
        final String amount = String.valueOf(observer.requestedAmount);
        final String ressouce = GetValuesTypes.getRessource("user").get(observer.getRelatedUser);

        String queryArgs = "wwww.doSomething.com/" + ressouce;
        String hmac512 = HMAC512.hmac512Digest(queryArgs);

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost post = new HttpPost(GetValuesTypes.getURL());
        post.addHeader("Key", GetValuesTypes.getKey());
        post.addHeader("Sign", hmac512);
        try {
            post.setEntity(new ByteArrayEntity(queryArgs.getBytes("UTF-8")));
        } catch (UnsupportedEncodingException e) {
            System.out.println("Exception in run");
        }
        List<NameValuePair> params = new ArrayList<>();

        params.add(new BasicNameValuePair("command", "order"));
        params.add(new BasicNameValuePair("ressource", ressource));
        params.add(new BasicNameValuePair("rate", String.valueOf(rate)));
        params.add(new BasicNameValuePair("amount", amount));
        params.add(new BasicNameValuePair("timestamp", timestamp));
        try {
            post.setEntity(new UrlEncodedFormEntity(params));
            CloseableHttpResponse response = httpClient.execute(post);
            HttpEntity entity = response.getEntity();
            Scanner in = new Scanner(entity.getContent());
            String orderNumber = "";
            while (in.hasNext()) {
                orderNumber = in.nextLine();
            }
            String[] findOrderNumber = orderNumber.split(".");
            long lastOrderNumber = -1;
            try {
                lastOrderNumber = Long.valueOf(findOrderNumber[3]);
            } catch (NumberFormatException exception) {
                System.out.println("NumberFormatException");
            } finally {
                if (lastOrderNumber != -1) {
                    observer.setOrderNumber(lastOrderNumber);
                }
            }
            in.close();
            EntityUtils.consume(entity);
            httpClient.close();
        } catch (IOException e) {
            System.out.println("Exception occured during process");
        }
    }

I would appreciate your help very much.

1 Answers
Related