github.com/safing/portbase@v0.19.5/database/record/wrapper_test.go (about)

     1  package record
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/safing/portbase/formats/dsd"
     8  )
     9  
    10  func TestWrapper(t *testing.T) {
    11  	t.Parallel()
    12  
    13  	// check model interface compliance
    14  	var m Record
    15  	w := &Wrapper{}
    16  	m = w
    17  	_ = m
    18  
    19  	// create test data
    20  	testData := []byte(`{"a": "b"}`)
    21  	encodedTestData := []byte(`J{"a": "b"}`)
    22  
    23  	// test wrapper
    24  	wrapper, err := NewWrapper("test:a", &Meta{}, dsd.JSON, testData)
    25  	if err != nil {
    26  		t.Fatal(err)
    27  	}
    28  	if wrapper.Format != dsd.JSON {
    29  		t.Error("format mismatch")
    30  	}
    31  	if !bytes.Equal(testData, wrapper.Data) {
    32  		t.Error("data mismatch")
    33  	}
    34  
    35  	encoded, err := wrapper.Marshal(wrapper, dsd.JSON)
    36  	if err != nil {
    37  		t.Fatal(err)
    38  	}
    39  	if !bytes.Equal(encodedTestData, encoded) {
    40  		t.Error("marshal mismatch")
    41  	}
    42  
    43  	wrapper.SetMeta(&Meta{})
    44  	wrapper.meta.Update()
    45  	raw, err := wrapper.MarshalRecord(wrapper)
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  
    50  	wrapper2, err := NewRawWrapper("test", "a", raw)
    51  	if err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	if !bytes.Equal(testData, wrapper2.Data) {
    55  		t.Error("marshal mismatch")
    56  	}
    57  }