fix(procurement): reject unsupported purchase payload fields
This commit is contained in:
+23
@@ -10,6 +10,29 @@ import java.util.List;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
class ProcurementRequestBoundaryTest {
|
||||
@Test void createRejectsMultiProductAndBatchExtensionsWithApplicationJacksonDefaults() {
|
||||
new org.springframework.boot.test.context.runner.ApplicationContextRunner()
|
||||
.withConfiguration(org.springframework.boot.autoconfigure.AutoConfigurations.of(
|
||||
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class))
|
||||
.withUserConfiguration(com.baiyue.common.web.LongIdJacksonConfiguration.class)
|
||||
.run(context -> {
|
||||
var json=context.getBean(ObjectMapper.class);
|
||||
assertThat(json.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
|
||||
String valid="""
|
||||
{"purchaseCategory":"sample","productName":"Sample","productSpecification":"A",
|
||||
"purchaseQuantity":1,"budgetUnitPrice":10,"currency":"CNY","receivingAddress":"Address",
|
||||
"contactName":"Buyer","contactPhone":"13800000000","idempotencyKey":"one"}
|
||||
""";
|
||||
assertThat(json.readValue(valid,OverseasProcurementRequests.Create.class).productName()).isEqualTo("Sample");
|
||||
for(String field:List.of("items","products","batches","purchaseBatches","shipmentBatches")) {
|
||||
var extended=(com.fasterxml.jackson.databind.node.ObjectNode)json.readTree(valid);
|
||||
extended.putArray(field).addObject().put("productName","Second product");
|
||||
assertThatThrownBy(()->json.treeToValue(extended,OverseasProcurementRequests.Create.class))
|
||||
.as(field).hasMessageContaining("单商品");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test void missingCommandVersionCannotDefaultToZero() throws Exception {
|
||||
var json=new ObjectMapper().findAndRegisterModules();
|
||||
try(var factory=jakarta.validation.Validation.buildDefaultValidatorFactory()) {
|
||||
|
||||
Reference in New Issue
Block a user