2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.liquidcheck.internal.json;
15 import static org.hamcrest.CoreMatchers.equalTo;
16 import static org.hamcrest.CoreMatchers.is;
17 import static org.hamcrest.CoreMatchers.notNullValue;
18 import static org.hamcrest.CoreMatchers.nullValue;
19 import static org.hamcrest.MatcherAssert.assertThat;
21 import java.nio.charset.StandardCharsets;
22 import java.nio.file.Files;
23 import java.nio.file.Paths;
24 import java.util.List;
26 import org.eclipse.jdt.annotation.NonNullByDefault;
27 import org.junit.jupiter.api.DisplayName;
28 import org.junit.jupiter.api.Test;
30 import com.google.gson.Gson;
33 * The {@link ResponseTest} will test the correct parsing from json responses for the CommData class.
35 * @author Marcel Goerentz - Initial contribution
38 public class ResponseTest {
40 @DisplayName("Test response from polling")
42 @SuppressWarnings("null")
43 public void pollingResponseTest() {
44 CommData response = new CommData();
46 List<String> lines = Files.readAllLines(Paths.get("src/test/resources/PollingResponseExample.json"),
47 StandardCharsets.UTF_8);
48 StringBuilder sb = new StringBuilder();
49 for (String line : lines) {
52 String json = sb.toString();
53 response = new Gson().fromJson(json, CommData.class);
54 } catch (Exception e) {
57 if (response != null && !"".equals(response.header.messageId)) {
58 assertThat(response, is(notNullValue()));
59 assertThat(response.header.namespace, is(equalTo("Device")));
60 assertThat(response.header.name, is(equalTo("Response")));
61 assertThat(response.header.messageId, is(equalTo("499C7D21-F9579A3C")));
62 assertThat(response.header.payloadVersion, is(equalTo("1")));
63 assertThat(response.header.authorization, is(equalTo("1C9DC262BE70-00038BC8-TX0K103HIXCXVLTBMVKVXFF")));
64 assertThat(response.payload.measure.level, is(equalTo(2.23)));
65 assertThat(response.payload.measure.content, is(equalTo(9265.0)));
66 assertThat(response.payload.measure.age, is(equalTo(1981)));
67 assertThat(response.payload.measure.raw.level, is(equalTo(2.2276)));
68 assertThat(response.payload.measure.raw.content, is(equalTo(9255.3193)));
69 assertThat(response.payload.expansion.boardType, is(equalTo(-1)));
70 assertThat(response.payload.expansion.board, is(nullValue()));
71 assertThat(response.payload.expansion.oneWire, is(nullValue()));
72 assertThat(response.payload.device.firmware, is(equalTo("1.60")));
73 assertThat(response.payload.device.hardware, is(equalTo("B5")));
74 assertThat(response.payload.device.name, is(equalTo("Liquid-Check")));
75 assertThat(response.payload.device.manufacturer, is(equalTo("SI-Elektronik GmbH")));
76 assertThat(response.payload.device.uuid, is(equalTo("0ba64a0c-7a88b168-0001")));
77 assertThat(response.payload.device.model.name, is(equalTo("")));
78 assertThat(response.payload.device.model.number, is(equalTo(1)));
79 assertThat(response.payload.device.security.code, is(equalTo("gkzQ5uGo6ElSdUsDWKQu2A==")));
80 assertThat(response.payload.system.error, is(equalTo(0)));
81 assertThat(response.payload.system.uptime, is(equalTo(232392)));
82 assertThat(response.payload.system.pump.totalRuns, is(equalTo(351)));
83 assertThat(response.payload.system.pump.totalRuntime, is(equalTo(1249)));
84 assertThat(response.payload.wifi.station.hostname, is(equalTo("Liquid-Check")));
85 assertThat(response.payload.wifi.station.ip, is(equalTo("192.168.2.102")));
86 assertThat(response.payload.wifi.station.gateway, is(equalTo("192.168.2.1")));
87 assertThat(response.payload.wifi.station.netmask, is(equalTo("255.255.255.0")));
88 assertThat(response.payload.wifi.station.mac, is(equalTo("1C:9D:C2:62:BE:70")));
89 assertThat(response.payload.wifi.accessPoint.ssid, is(equalTo("WLAN-267994")));
90 assertThat(response.payload.wifi.accessPoint.bssid, is(equalTo("4C:09:D4:2B:C3:97")));
91 assertThat(response.payload.wifi.accessPoint.rssi, is(equalTo(-45)));
95 @DisplayName("Test response from measurement command")
97 public void commandResponseTest() {
98 CommData response = new CommData();
100 List<String> lines = Files.readAllLines(Paths.get("src/test/resources/CommandResponseExample.json"),
101 StandardCharsets.UTF_8);
102 StringBuilder sb = new StringBuilder();
103 for (String line : lines) {
106 String json = sb.toString();
107 response = new Gson().fromJson(json, CommData.class);
108 } catch (Exception e) {
111 if (response != null && !"".equals(response.header.messageId)) {
112 assertThat(response, is(notNullValue()));
113 assertThat(response.header.namespace, is(equalTo("Device.Control")));
114 assertThat(response.header.name, is(equalTo("StartMeasure.Response")));
115 assertThat(response.header.messageId, is(equalTo("6D6A415C-A116FF36")));
116 assertThat(response.header.payloadVersion, is(equalTo("1")));
117 assertThat(response.header.authorization, is(equalTo("1C9DC262BE70-001092EA-4D4KU4ID5ZCXPNTQJ3V8HD")));
118 assertThat(response.context.status, is(equalTo("success")));