github.com/uber/kraken@v0.1.4/core/digester_test.go (about) 1 // Copyright (c) 2016-2019 Uber Technologies, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 package core 15 16 import ( 17 "bytes" 18 "io" 19 "io/ioutil" 20 "strings" 21 "testing" 22 23 "github.com/stretchr/testify/require" 24 ) 25 26 const ( 27 _testStr = "test" 28 _expectedHex = "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08" 29 ) 30 31 func TestNewDigester(t *testing.T) { 32 require := require.New(t) 33 34 d := NewDigester() 35 36 hexDigest := d.Digest().Hex() 37 require.NoError(ValidateSHA256(hexDigest)) 38 } 39 40 func TestFromBytes(t *testing.T) { 41 require := require.New(t) 42 43 d := NewDigester() 44 d.FromBytes([]byte(_testStr)) 45 46 hexDigest := d.Digest().Hex() 47 require.NoError(ValidateSHA256(hexDigest)) 48 require.Equal(_expectedHex, hexDigest) 49 } 50 51 func TestFromReader(t *testing.T) { 52 require := require.New(t) 53 54 d := NewDigester() 55 r := strings.NewReader(_testStr) 56 d.FromReader(r) 57 58 hexDigest := d.Digest().Hex() 59 require.NoError(ValidateSHA256(hexDigest)) 60 require.Equal(_expectedHex, hexDigest) 61 } 62 63 func TestTeeReader(t *testing.T) { 64 require := require.New(t) 65 66 d := NewDigester() 67 68 r := bytes.NewBufferString(_testStr) 69 w := &bytes.Buffer{} 70 tr := d.Tee(r) 71 72 _, err := io.Copy(w, tr) 73 require.NoError(err) 74 b, err := ioutil.ReadAll(w) 75 require.NoError(err) 76 require.Equal(_testStr, string(b)) 77 78 hexDigest := d.Digest().Hex() 79 require.NoError(ValidateSHA256(hexDigest)) 80 require.Equal(_expectedHex, hexDigest) 81 }