From bddd08d4b069a0ee8669d4ad048867578bfa9b33 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Tue, 26 Apr 2022 14:01:16 +0200 Subject: [PATCH] Remove "proto:" prefix from bad proto JSON messages --- api/read/read.go | 5 ++++- authority/admin/api/policy_test.go | 12 ++++++------ authority/admin/api/provisioner_test.go | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/api/read/read.go b/api/read/read.go index 2f7348bd..9c5ebd07 100644 --- a/api/read/read.go +++ b/api/read/read.go @@ -6,6 +6,7 @@ import ( "errors" "io" "net/http" + "strings" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" @@ -33,7 +34,9 @@ func ProtoJSON(r io.Reader, m proto.Message) error { switch err := protojson.Unmarshal(data, m); { case errors.Is(err, proto.Error): - return badProtoJSONError(err.Error()) + // trim the proto prefix for the message + s := strings.TrimSpace(strings.TrimPrefix(err.Error(), "proto:")) + return badProtoJSONError(s) default: return err } diff --git a/authority/admin/api/policy_test.go b/authority/admin/api/policy_test.go index fffa84f7..d0c97729 100644 --- a/authority/admin/api/policy_test.go +++ b/authority/admin/api/policy_test.go @@ -376,7 +376,7 @@ func TestPolicyAdminResponder_CreateAuthorityPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } @@ -634,7 +634,7 @@ func TestPolicyAdminResponder_UpdateAuthorityPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } @@ -1081,7 +1081,7 @@ func TestPolicyAdminResponder_CreateProvisionerPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } @@ -1292,7 +1292,7 @@ func TestPolicyAdminResponder_UpdateProvisionerPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } @@ -1694,7 +1694,7 @@ func TestPolicyAdminResponder_CreateACMEAccountPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } @@ -1880,7 +1880,7 @@ func TestPolicyAdminResponder_UpdateACMEAccountPolicy(t *testing.T) { // a syntax error (in the tests). If the message doesn't start with "proto", // we expect a full string match. if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(ae.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, ae.Message) } diff --git a/authority/admin/api/provisioner_test.go b/authority/admin/api/provisioner_test.go index de7c3646..486b6cda 100644 --- a/authority/admin/api/provisioner_test.go +++ b/authority/admin/api/provisioner_test.go @@ -430,7 +430,7 @@ func TestHandler_CreateProvisioner(t *testing.T) { assert.Equals(t, []string{"application/json"}, res.Header["Content-Type"]) if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(adminErr.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, adminErr.Message) } @@ -1087,7 +1087,7 @@ func TestHandler_UpdateProvisioner(t *testing.T) { assert.Equals(t, []string{"application/json"}, res.Header["Content-Type"]) if strings.HasPrefix(tc.err.Message, "proto:") { - assert.True(t, strings.Contains(tc.err.Message, "syntax error")) + assert.True(t, strings.Contains(adminErr.Message, "syntax error")) } else { assert.Equals(t, tc.err.Message, adminErr.Message) }