fix: allowed ConcatenateJSON with empty input (#138)

This commit is contained in:
陈杨文 2021-10-28 13:06:34 +08:00 committed by GitHub
parent 55ec7d9dd2
commit c45f03e144
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 1 deletions

View file

@ -29,6 +29,14 @@ func ConcatenateJSON(first, second []byte) ([]byte, error) {
if !bytes.HasPrefix(second, []byte{'{'}) {
return nil, fmt.Errorf("jws: invalid JSON %s", second)
}
// check empty
if len(first) == 2 {
return second, nil
}
if len(second) == 2 {
return first, nil
}
first[len(first)-1] = ','
first = append(first, second[1:]...)
return first, nil

View file

@ -44,6 +44,36 @@ func TestConcatenateJSON(t *testing.T) {
[]byte(`{"some": "thing","another": "thing"}`),
false,
},
{
"first empty",
args{
[]byte(`{}`),
[]byte(`{"some": "thing"}`),
},
[]byte(`{"some": "thing"}`),
false,
},
{
"second empty",
args{
[]byte(`{"some": "thing"}`),
[]byte(`{}`),
},
[]byte(`{"some": "thing"}`),
false,
},
{
"both empty",
args{
[]byte(`{}`),
[]byte(`{}`),
},
[]byte(`{}`),
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@ -53,7 +83,7 @@ func TestConcatenateJSON(t *testing.T) {
return
}
if !bytes.Equal(got, tt.want) {
t.Errorf("ConcatenateJSON() got = %v, want %v", got, tt.want)
t.Errorf("ConcatenateJSON() got = %v, want %v", string(got), tt.want)
}
})
}