MCPcopy Create free account
hub / github.com/google/go-cloud / TestDecryptDecoder

Function TestDecryptDecoder

runtimevar/runtimevar_test.go:639–698  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

637}
638
639func TestDecryptDecoder(t *testing.T) {
640 ctx := context.Background()
641 secretKey, err := localsecrets.NewRandomKey()
642 if err != nil {
643 t.Fatal(err)
644 }
645 keeper := localsecrets.NewKeeper(secretKey)
646
647 tests := []struct {
648 desc string
649 in any
650 encodeFn func(any) ([]byte, error)
651 postDecFn Decode
652 }{
653 {
654 desc: "Bytes",
655 in: []byte("hello world"),
656 encodeFn: func(obj any) ([]byte, error) { return obj.([]byte), nil },
657 },
658 {
659 desc: "String",
660 in: "hello world",
661 encodeFn: func(obj any) ([]byte, error) { return []byte(obj.(string)), nil },
662 postDecFn: StringDecode,
663 },
664 {
665 desc: "JSON",
666 in: map[string]string{
667 "slice": "pizza",
668 },
669 encodeFn: json.Marshal,
670 postDecFn: JSONDecode,
671 },
672 }
673 for _, tc := range tests {
674 t.Run(tc.desc, func(t *testing.T) {
675 decoder := NewDecoder(tc.in, DecryptDecode(keeper, tc.postDecFn))
676
677 b, err := tc.encodeFn(tc.in)
678 if err != nil {
679 t.Fatalf("encode error %v", err)
680 }
681 encrypted, err := keeper.Encrypt(ctx, b)
682 if err != nil {
683 t.Fatalf("encrypt error: %v", err)
684 }
685
686 got, err := decoder.Decode(ctx, encrypted)
687 if err != nil {
688 t.Fatalf("parse input\n%s\nerror: %v", string(b), err)
689 }
690 if reflect.TypeOf(got) != reflect.TypeOf(tc.in) {
691 t.Errorf("type mismatch got %T, want %T", got, tc.in)
692 }
693 if diff := cmp.Diff(got, tc.in); diff != "" {
694 t.Errorf("value diff:\n%v", diff)
695 }
696 })

Callers

nothing calls this directly

Calls 6

EncryptMethod · 0.95
DecodeMethod · 0.95
NewRandomKeyFunction · 0.92
NewKeeperFunction · 0.92
NewDecoderFunction · 0.85
DecryptDecodeFunction · 0.85

Tested by

no test coverage detected