git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/checksum/checksum_test.go (about)

     1  package checksum
     2  
     3  import (
     4  	"crypto/rand"
     5  	"crypto/sha256"
     6  	"testing"
     7  
     8  	"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
     9  	"git.frostfs.info/TrueCloudLab/tzhash/tz"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestChecksum(t *testing.T) {
    14  	var c Checksum
    15  
    16  	cSHA256 := [sha256.Size]byte{}
    17  	_, _ = rand.Read(cSHA256[:])
    18  
    19  	c.SetSHA256(cSHA256)
    20  
    21  	require.Equal(t, SHA256, c.Type())
    22  	require.Equal(t, cSHA256[:], c.Value())
    23  
    24  	var cV2 refs.Checksum
    25  	c.WriteToV2(&cV2)
    26  
    27  	require.Equal(t, refs.SHA256, cV2.GetType())
    28  	require.Equal(t, cSHA256[:], cV2.GetSum())
    29  
    30  	cTZ := [tz.Size]byte{}
    31  	_, _ = rand.Read(cSHA256[:])
    32  
    33  	c.SetTillichZemor(cTZ)
    34  
    35  	require.Equal(t, TZ, c.Type())
    36  	require.Equal(t, cTZ[:], c.Value())
    37  
    38  	c.WriteToV2(&cV2)
    39  
    40  	require.Equal(t, refs.TillichZemor, cV2.GetType())
    41  	require.Equal(t, cTZ[:], cV2.GetSum())
    42  }
    43  
    44  func TestNewChecksum(t *testing.T) {
    45  	t.Run("default values", func(t *testing.T) {
    46  		var chs Checksum
    47  
    48  		// check initial values
    49  		require.Equal(t, Unknown, chs.Type())
    50  		require.Nil(t, chs.Value())
    51  
    52  		// convert to v2 message
    53  		var chsV2 refs.Checksum
    54  		chs.WriteToV2(&chsV2)
    55  
    56  		require.Equal(t, refs.UnknownChecksum, chsV2.GetType())
    57  		require.Nil(t, chsV2.GetSum())
    58  	})
    59  }
    60  
    61  func TestCalculation(t *testing.T) {
    62  	var c Checksum
    63  	payload := []byte{0, 1, 2, 3, 4, 5}
    64  
    65  	t.Run("SHA256", func(t *testing.T) {
    66  		orig := sha256.Sum256(payload)
    67  
    68  		Calculate(&c, SHA256, payload)
    69  
    70  		require.Equal(t, orig[:], c.Value())
    71  	})
    72  
    73  	t.Run("TZ", func(t *testing.T) {
    74  		orig := tz.Sum(payload)
    75  
    76  		Calculate(&c, TZ, payload)
    77  
    78  		require.Equal(t, orig[:], c.Value())
    79  	})
    80  }