Skip to content

Commit a9c76a5

Browse files
author
Mathias Oben
committed
Extended validation in models and tests
1 parent 6355a20 commit a9c76a5

File tree

39 files changed

+2217
-39
lines changed

39 files changed

+2217
-39
lines changed

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/CertificateSignedRequest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,20 @@ of this software and associated documentation files (the "Software"), to deal
2727
*/
2828

2929
import eu.chargetime.ocpp.model.Request;
30-
import eu.chargetime.ocpp.utilities.ModelUtil;
30+
import eu.chargetime.ocpp.model.validation.StringMaxLengthValidationRule;
31+
import eu.chargetime.ocpp.model.validation.Validator;
32+
import eu.chargetime.ocpp.model.validation.ValidatorBuilder;
3133
import eu.chargetime.ocpp.utilities.MoreObjects;
3234

3335
import java.util.Objects;
3436

3537
public class CertificateSignedRequest implements Request {
3638

37-
private static final int STRING_10000_CHAR_MAX_LENGTH = 10000;
39+
private static final transient Validator certificateChainValidator =
40+
new ValidatorBuilder()
41+
.addRule(new StringMaxLengthValidationRule(10000))
42+
.setRequired(true)
43+
.build();
3844

3945
private String certificateChain;
4046

@@ -66,6 +72,7 @@ public String getCertificateChain() {
6672
* @param certificateChain string[0..10000]
6773
*/
6874
public void setCertificateChain(String certificateChain) {
75+
certificateChainValidator.validate(certificateChain);
6976
this.certificateChain = certificateChain;
7077
}
7178

@@ -76,7 +83,7 @@ public boolean transactionRelated() {
7683

7784
@Override
7885
public boolean validate() {
79-
return ModelUtil.validate(certificateChain, STRING_10000_CHAR_MAX_LENGTH);
86+
return certificateChainValidator.safeValidate(certificateChain);
8087
}
8188

8289
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/DeleteCertificateRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public boolean transactionRelated() {
7070

7171
@Override
7272
public boolean validate() {
73-
return certificateHashData != null;
73+
return certificateHashData != null && certificateHashData.validate();
7474
}
7575

7676
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/ExtendedTriggerMessageRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ of this software and associated documentation files (the "Software"), to deal
2626
SOFTWARE.
2727
*/
2828

29+
import eu.chargetime.ocpp.PropertyConstraintException;
2930
import eu.chargetime.ocpp.model.Request;
3031
import eu.chargetime.ocpp.model.securityext.types.MessageTriggerEnumType;
3132
import eu.chargetime.ocpp.utilities.MoreObjects;
@@ -79,6 +80,9 @@ public Integer getConnectorId() {
7980
* @param connectorId Integer connectorId > 0
8081
*/
8182
public void setConnectorId(Integer connectorId) {
83+
if (connectorId != null && connectorId <= 0) {
84+
throw new PropertyConstraintException(connectorId, "connectorId must be > 0");
85+
}
8286
this.connectorId = connectorId;
8387
}
8488

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/GetInstalledCertificateIdsConfirmation.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,19 @@ public boolean transactionRelated() {
9191

9292
@Override
9393
public boolean validate() {
94-
return status != null;
94+
return status != null && validateCertificateHashData();
95+
}
96+
97+
private boolean validateCertificateHashData() {
98+
if (certificateHashData == null) {
99+
return true;
100+
}
101+
for (CertificateHashDataType chd : certificateHashData) {
102+
if (!chd.validate()) {
103+
return false;
104+
}
105+
}
106+
return true;
95107
}
96108

97109
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/GetLogConfirmation.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,21 @@ of this software and associated documentation files (the "Software"), to deal
2828

2929
import eu.chargetime.ocpp.model.Request;
3030
import eu.chargetime.ocpp.model.securityext.types.LogStatusEnumType;
31+
import eu.chargetime.ocpp.model.validation.OCPPSecurityExtDatatypes;
32+
import eu.chargetime.ocpp.model.validation.StringMaxLengthValidationRule;
33+
import eu.chargetime.ocpp.model.validation.Validator;
34+
import eu.chargetime.ocpp.model.validation.ValidatorBuilder;
3135
import eu.chargetime.ocpp.utilities.ModelUtil;
3236
import eu.chargetime.ocpp.utilities.MoreObjects;
3337

3438
import java.util.Objects;
3539

3640
public class GetLogConfirmation implements Request {
3741

38-
private static final int STRING_255_CHAR_MAX_LENGTH = 255;
42+
private static final transient Validator filenameValidator =
43+
new ValidatorBuilder()
44+
.addRule(new StringMaxLengthValidationRule(255))
45+
.build();
3946

4047
private LogStatusEnumType status;
4148
private String filename;
@@ -86,6 +93,7 @@ public String getFilename() {
8693
* @param filename string[0..255]
8794
*/
8895
public void setFilename(String filename) {
96+
filenameValidator.validate(filename);
8997
this.filename = filename;
9098
}
9199

@@ -96,8 +104,7 @@ public boolean transactionRelated() {
96104

97105
@Override
98106
public boolean validate() {
99-
return status != null
100-
&& (filename == null || ModelUtil.validate(filename, STRING_255_CHAR_MAX_LENGTH));
107+
return status != null && filenameValidator.safeValidate(filename);
101108
}
102109

103110
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/GetLogRequest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ public class GetLogRequest implements Request {
4646
*
4747
* @param logType LogEnumType. See {@link #setLogType(LogEnumType)}
4848
* @param requestId Integer. See {@link #setRequestId(Integer)}
49-
* @param log LogParametersType. See {@link #setLogParametersType(LogParametersType)}
49+
* @param log LogParametersType. See {@link #setLog(LogParametersType)}
5050
*/
5151
public GetLogRequest(LogEnumType logType, Integer requestId, LogParametersType log) {
5252
setLogType(logType);
5353
setRequestId(requestId);
54-
setLogParametersType(log);
54+
setLog(log);
5555
}
5656

5757
/**
@@ -140,7 +140,7 @@ public void setRetryInterval(Integer retryInterval) {
140140
*
141141
* @return {@link LogParametersType}
142142
*/
143-
public LogParametersType getLogParametersType() {
143+
public LogParametersType getLog() {
144144
return log;
145145
}
146146

@@ -150,7 +150,7 @@ public LogParametersType getLogParametersType() {
150150
*
151151
* @param log {@link LogParametersType}
152152
*/
153-
public void setLogParametersType(LogParametersType log) {
153+
public void setLog(LogParametersType log) {
154154
this.log = log;
155155
}
156156

@@ -161,7 +161,7 @@ public boolean transactionRelated() {
161161

162162
@Override
163163
public boolean validate() {
164-
return logType != null && log != null;
164+
return logType != null && requestId != null && log != null && log.validate();
165165
}
166166

167167
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/InstallCertificateRequest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,20 @@ of this software and associated documentation files (the "Software"), to deal
2828

2929
import eu.chargetime.ocpp.model.Request;
3030
import eu.chargetime.ocpp.model.securityext.types.CertificateUseEnumType;
31-
import eu.chargetime.ocpp.utilities.ModelUtil;
31+
import eu.chargetime.ocpp.model.validation.StringMaxLengthValidationRule;
32+
import eu.chargetime.ocpp.model.validation.Validator;
33+
import eu.chargetime.ocpp.model.validation.ValidatorBuilder;
3234
import eu.chargetime.ocpp.utilities.MoreObjects;
3335

3436
import java.util.Objects;
3537

3638
public class InstallCertificateRequest implements Request {
3739

38-
private static final int STRING_5500_CHAR_MAX_LENGTH = 5500;
40+
private static final transient Validator certificateValidator =
41+
new ValidatorBuilder()
42+
.addRule(new StringMaxLengthValidationRule(5500))
43+
.setRequired(true)
44+
.build();
3945

4046
private CertificateUseEnumType certificateType;
4147
private String certificate;
@@ -84,6 +90,7 @@ public String getCertificate() {
8490
* @param certificate string[0..5500]
8591
*/
8692
public void setCertificate(String certificate) {
93+
certificateValidator.validate(certificate);
8794
this.certificate = certificate;
8895
}
8996

@@ -94,8 +101,7 @@ public boolean transactionRelated() {
94101

95102
@Override
96103
public boolean validate() {
97-
return certificateType != null
98-
&& ModelUtil.validate(certificate, STRING_5500_CHAR_MAX_LENGTH);
104+
return certificateType != null && certificateValidator.safeValidate(certificate);
99105
}
100106

101107
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/SecurityEventNotificationRequest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,27 @@ of this software and associated documentation files (the "Software"), to deal
2727
*/
2828

2929
import eu.chargetime.ocpp.model.Request;
30+
import eu.chargetime.ocpp.model.validation.StringMaxLengthValidationRule;
31+
import eu.chargetime.ocpp.model.validation.Validator;
32+
import eu.chargetime.ocpp.model.validation.ValidatorBuilder;
3033
import eu.chargetime.ocpp.utilities.MoreObjects;
3134

3235
import java.time.ZonedDateTime;
3336
import java.util.Objects;
3437

3538
public class SecurityEventNotificationRequest implements Request {
3639

40+
private static final transient Validator typeValidator =
41+
new ValidatorBuilder()
42+
.addRule(new StringMaxLengthValidationRule(50))
43+
.setRequired(true)
44+
.build();
45+
46+
private static final transient Validator techInfoValidator =
47+
new ValidatorBuilder()
48+
.addRule(new StringMaxLengthValidationRule(255))
49+
.build();
50+
3751
private String type;
3852
private ZonedDateTime timestamp;
3953
private String techInfo;
@@ -64,6 +78,7 @@ public String getType() {
6478
* @param type String
6579
*/
6680
public void setType(String type) {
81+
typeValidator.validate(type);
6782
this.type = type;
6883
}
6984

@@ -100,6 +115,7 @@ public String getTechInfo() {
100115
* @param techInfo String
101116
*/
102117
public void setTechInfo(String techInfo) {
118+
techInfoValidator.validate(techInfo);
103119
this.techInfo = techInfo;
104120
}
105121

@@ -110,7 +126,9 @@ public boolean transactionRelated() {
110126

111127
@Override
112128
public boolean validate() {
113-
return type != null && timestamp != null;
129+
return typeValidator.safeValidate(type)
130+
&& timestamp != null
131+
&& techInfoValidator.safeValidate(techInfo);
114132
}
115133

116134
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/SignCertificateRequest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,20 @@ of this software and associated documentation files (the "Software"), to deal
2727
*/
2828

2929
import eu.chargetime.ocpp.model.Request;
30-
import eu.chargetime.ocpp.utilities.ModelUtil;
30+
import eu.chargetime.ocpp.model.validation.StringMaxLengthValidationRule;
31+
import eu.chargetime.ocpp.model.validation.Validator;
32+
import eu.chargetime.ocpp.model.validation.ValidatorBuilder;
3133
import eu.chargetime.ocpp.utilities.MoreObjects;
3234

3335
import java.util.Objects;
3436

3537
public class SignCertificateRequest implements Request {
3638

37-
private static final int STRING_5500_CHAR_MAX_LENGTH = 5500;
39+
private static final transient Validator csrValidator =
40+
new ValidatorBuilder()
41+
.addRule(new StringMaxLengthValidationRule(5500))
42+
.setRequired(true)
43+
.build();
3844

3945
private String csr;
4046

@@ -66,6 +72,7 @@ public String getCsr() {
6672
* @param csr string[0..5500]
6773
*/
6874
public void setCsr(String csr) {
75+
csrValidator.validate(csr);
6976
this.csr = csr;
7077
}
7178

@@ -76,7 +83,7 @@ public boolean transactionRelated() {
7683

7784
@Override
7885
public boolean validate() {
79-
return ModelUtil.validate(csr, STRING_5500_CHAR_MAX_LENGTH);
86+
return csrValidator.safeValidate(csr);
8087
}
8188

8289
@Override

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/securityext/SignedUpdateFirmwareRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public boolean transactionRelated() {
137137

138138
@Override
139139
public boolean validate() {
140-
return requestId != null && firmware != null;
140+
return requestId != null && firmware != null && firmware.validate();
141141
}
142142

143143
@Override

0 commit comments

Comments
 (0)