Skip to content

Commit caf3bb6

Browse files
authored
Merge pull request #242 from mmauksch/validateMeterValues
add stricter validation for Metervalues as described in #241
2 parents 2348f9f + 0ce7c80 commit caf3bb6

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/MeterValue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public MeterValue(ZonedDateTime timestamp, SampledValue[] sampledValue) {
6767

6868
@Override
6969
public boolean validate() {
70-
boolean valid = timestamp != null && sampledValue != null;
70+
boolean valid = timestamp != null && sampledValue != null && sampledValue.length > 0;
7171

7272
if (valid) {
7373
for (SampledValue value : sampledValue) {

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/MeterValuesRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public MeterValuesRequest(Integer connectorId) {
6464

6565
@Override
6666
public boolean validate() {
67-
boolean valid = this.connectorId != null && this.connectorId >= 0 && this.meterValue != null;
67+
boolean valid = this.connectorId != null && this.connectorId >= 0 && this.meterValue != null && meterValue.length > 0;
6868

6969
if (valid) {
7070
for (MeterValue current : this.meterValue) {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package eu.chargetime.ocpp.model.core;
2+
3+
import junit.framework.TestCase;
4+
5+
import java.time.ZonedDateTime;
6+
7+
public class MeterValuesRequestTest extends TestCase {
8+
9+
public void testEmptyMeterValuesArray_FailsValidation() {
10+
MeterValuesRequest request = new MeterValuesRequest(1);
11+
request.setTransactionId(2);
12+
request.setMeterValue(new MeterValue[]{});
13+
assertFalse(request.validate());
14+
}
15+
16+
public void testEmptySampledValuesArray_failsValidation() {
17+
MeterValuesRequest request = new MeterValuesRequest(1);
18+
MeterValue measured = new MeterValue(ZonedDateTime.now(), new SampledValue[]{});
19+
request.setTransactionId(2);
20+
request.setMeterValue(new MeterValue[]{measured});
21+
assertFalse(request.validate());
22+
}
23+
24+
public void testMeterValuesWithAtLeastOneMeasurementPassesValidation() {
25+
MeterValuesRequest request = new MeterValuesRequest(1);
26+
SampledValue sample = new SampledValue("5");
27+
MeterValue measured = new MeterValue(ZonedDateTime.now(), new SampledValue[]{sample});
28+
request.setTransactionId(2);
29+
request.setMeterValue(new MeterValue[]{measured});
30+
assertTrue(request.validate());
31+
}
32+
}

0 commit comments

Comments
 (0)