// Copyright (C) 2022-2023 Luke Shumaker // // SPDX-License-Identifier: GPL-2.0-or-later package internal import ( "bytes" "encoding/base64" "testing" "github.com/stretchr/testify/require" ) func b64encode(t *testing.T, input []byte) []byte { var encoded bytes.Buffer enc := base64.NewEncoder(base64.StdEncoding, &encoded) _, err := enc.Write(input) require.NoError(t, err) require.NoError(t, enc.Close()) return encoded.Bytes() } func b64decode(t *testing.T, input []byte) []byte { var decoded bytes.Buffer dec := NewBase64Decoder(&decoded) _, err := dec.Write(input) require.NoError(t, err) require.NoError(t, dec.Close()) return decoded.Bytes() } func FuzzBase64Decoder(f *testing.F) { f.Fuzz(func(t *testing.T, input []byte) { encoded := b64encode(t, input) decoded := b64decode(t, encoded) t.Logf("input b64 = %q", encoded) t.Logf("expected decoded = %#v", input) t.Logf("actual decoded = %#v", decoded) if !bytes.Equal(input, decoded) { t.Fail() } }) }