MCPcopy Create free account
hub / github.com/containers/image / TestDigestingReaderRead

Function TestDigestingReaderRead

copy/digesting_reader_test.go:29–77  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27}
28
29func TestDigestingReaderRead(t *testing.T) {
30 cases := []struct {
31 input []byte
32 digest digest.Digest
33 }{
34 {[]byte(""), "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
35 {[]byte("abc"), "sha256:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"},
36 {make([]byte, 65537), "sha256:3266304f31be278d06c3bd3eb9aa3e00c59bedec0a890de466568b0b90b0e01f"},
37 }
38 // Valid input
39 for _, c := range cases {
40 source := bytes.NewReader(c.input)
41 reader, err := newDigestingReader(source, c.digest)
42 require.NoError(t, err, c.digest.String())
43 dest := bytes.Buffer{}
44 n, err := io.Copy(&dest, reader)
45 assert.NoError(t, err, c.digest.String())
46 assert.Equal(t, int64(len(c.input)), n, c.digest.String())
47 assert.Equal(t, c.input, dest.Bytes(), c.digest.String())
48 assert.False(t, reader.validationFailed, c.digest.String())
49 assert.True(t, reader.validationSucceeded, c.digest.String())
50 }
51 // Modified input
52 for _, c := range cases {
53 source := bytes.NewReader(bytes.Join([][]byte{c.input, []byte("x")}, nil))
54 reader, err := newDigestingReader(source, c.digest)
55 require.NoError(t, err, c.digest.String())
56 dest := bytes.Buffer{}
57 _, err = io.Copy(&dest, reader)
58 assert.Error(t, err, c.digest.String())
59 assert.True(t, reader.validationFailed, c.digest.String())
60 assert.False(t, reader.validationSucceeded, c.digest.String())
61 }
62 // Truncated input
63 for _, c := range cases {
64 source := bytes.NewReader(c.input)
65 reader, err := newDigestingReader(source, c.digest)
66 require.NoError(t, err, c.digest.String())
67 if len(c.input) != 0 {
68 dest := bytes.Buffer{}
69 truncatedLen := int64(len(c.input) - 1)
70 n, err := io.CopyN(&dest, reader, truncatedLen)
71 assert.NoError(t, err, c.digest.String())
72 assert.Equal(t, truncatedLen, n, c.digest.String())
73 }
74 assert.False(t, reader.validationFailed, c.digest.String())
75 assert.False(t, reader.validationSucceeded, c.digest.String())
76 }
77}

Callers

nothing calls this directly

Calls 3

newDigestingReaderFunction · 0.85
StringMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…