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 }