fix(handler): return human readable error for json cred w/ empty object (#3109)

* fix(handler): return human readable error for json cred w/ empty object

* fix(handler): sync error messages for create/update json cred

* fix(handler): sync error logic for create/update json cred
This commit is contained in:
Damian Debkowski authored and GitHub committed 2023-04-19 10:17:07 -07:00
1 parent 5e9ffd57d4
commit c5b1b7bbc7
2 files changed
+11 -39

No files matched your search

@@ -782,14 +782,10 @@ func validateCreateRequest(req *pbs.CreateCredentialRequest) error {
case credential.JsonSubtype.String():
object := req.GetItem().GetJsonAttributes().GetObject()
if object == nil && len(object.AsMap()) <= 0 {
badFields[objectField] = "Field required for creating a json credential."
}
objectBytes, err := json.Marshal(object)
if err != nil {
if object == nil || len(object.AsMap()) <= 0 {
badFields[objectField] = "This is a required field and cannot be set to empty."
} else if _, err := json.Marshal(object); err != nil {
badFields[objectField] = "Unable to parse given json value"
} else if len(objectBytes) <= 0 {
badFields[objectField] = "Field required for creating a json credential."
}
default:
@@ -846,21 +842,13 @@ func validateUpdateRequest(req *pbs.UpdateCredentialRequest) error {
}
case credential.JsonSubtype:
object := req.GetItem().GetJsonAttributes().GetObject()
if object != nil {
_, err := json.Marshal(object.AsMap())
if err != nil {
if handlers.MaskContainsPrefix(req.GetUpdateMask().GetPaths(), objectField) {
object := req.GetItem().GetJsonAttributes().GetObject()
if object == nil || len(object.AsMap()) <= 0 {
badFields[objectField] = "This is a required field and cannot be set to empty"
} else if _, err := json.Marshal(object); err != nil {
badFields[objectField] = "Unable to parse given json value"
}
if !handlers.MaskContainsPrefix(req.GetUpdateMask().GetPaths(), objectField) {
badFields[objectField] = "This is a required field and cannot be set to empty."
}
if len(object.AsMap()) == 0 {
badFields[objectField] = "This is a required field and cannot be set to empty."
}
}
if handlers.MaskContainsPrefix(req.GetUpdateMask().GetPaths(), objectField) && object == nil {
badFields[objectField] = "This is a required field and cannot be set to empty."
}
default:
@@ -1150,20 +1150,6 @@ func TestUpdate(t *testing.T) {
return out
},
},
{
name: "update-empty-json",
req: &pbs.UpdateCredentialRequest{
UpdateMask: fieldmask(),
Item: &pb.Credential{
Attrs: &pb.Credential_JsonAttributes{
JsonAttributes: &pb.JsonAttributes{
Object: &structpb.Struct{},
},
},
},
},
expErrorContains: "This is a required field and cannot be set to empty",
},
{
name: "update-empty-object-json",
req: &pbs.UpdateCredentialRequest{
@@ -1179,14 +1165,12 @@ func TestUpdate(t *testing.T) {
expErrorContains: "This is a required field and cannot be set to empty",
},
{
name: "update-empty-mask-json",
name: "update-nil-object-json",
req: &pbs.UpdateCredentialRequest{
UpdateMask: fieldmask(),
UpdateMask: fieldmask("attributes.object.password"),
Item: &pb.Credential{
Attrs: &pb.Credential_JsonAttributes{
JsonAttributes: &pb.JsonAttributes{
Object: secondSecret,
},
JsonAttributes: &pb.JsonAttributes{},
},
},
},