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:
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{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user