github.com/lynxsecurity/viper@v1.10.0/internal/encoding/encoder_test.go (about)

     1  package encoding
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  type encoder struct {
     8  	b []byte
     9  }
    10  
    11  func (e encoder) Encode(_ interface{}) ([]byte, error) {
    12  	return e.b, nil
    13  }
    14  
    15  func TestEncoderRegistry_RegisterEncoder(t *testing.T) {
    16  	t.Run("OK", func(t *testing.T) {
    17  		registry := NewEncoderRegistry()
    18  
    19  		err := registry.RegisterEncoder("myformat", encoder{})
    20  		if err != nil {
    21  			t.Fatal(err)
    22  		}
    23  	})
    24  
    25  	t.Run("AlreadyRegistered", func(t *testing.T) {
    26  		registry := NewEncoderRegistry()
    27  
    28  		err := registry.RegisterEncoder("myformat", encoder{})
    29  		if err != nil {
    30  			t.Fatal(err)
    31  		}
    32  
    33  		err = registry.RegisterEncoder("myformat", encoder{})
    34  		if err != ErrEncoderFormatAlreadyRegistered {
    35  			t.Fatalf("expected ErrEncoderFormatAlreadyRegistered, got: %v", err)
    36  		}
    37  	})
    38  }
    39  
    40  func TestEncoderRegistry_Decode(t *testing.T) {
    41  	t.Run("OK", func(t *testing.T) {
    42  		registry := NewEncoderRegistry()
    43  		encoder := encoder{
    44  			b: []byte("encoded value"),
    45  		}
    46  
    47  		err := registry.RegisterEncoder("myformat", encoder)
    48  		if err != nil {
    49  			t.Fatal(err)
    50  		}
    51  
    52  		b, err := registry.Encode("myformat", "some value")
    53  		if err != nil {
    54  			t.Fatal(err)
    55  		}
    56  
    57  		if string(b) != "encoded value" {
    58  			t.Fatalf("expected 'encoded value', got: %#v", string(b))
    59  		}
    60  	})
    61  
    62  	t.Run("EncoderNotFound", func(t *testing.T) {
    63  		registry := NewEncoderRegistry()
    64  
    65  		_, err := registry.Encode("myformat", "some value")
    66  		if err != ErrEncoderNotFound {
    67  			t.Fatalf("expected ErrEncoderNotFound, got: %v", err)
    68  		}
    69  	})
    70  }