func (as *assertsSuite) TestDecoderHappyWithTrailerDoubleNewlines(c *C) { streams := []string{ exampleBodyAndExtraHeaders, exampleEmptyBody2NlNl, exampleEmptyBodyAllDefaults, } for _, streamData := range streams { stream := bytes.NewBufferString(streamData) if strings.HasSuffix(streamData, "\n") { stream.WriteString("\n") } else { stream.WriteString("\n\n") } decoder := asserts.NewDecoderStressed(stream, 16, 1024, 1024, 1024) a, err := decoder.Decode() c.Assert(err, IsNil, Commentf("stream: %q", streamData)) checkContent(c, a, streamData) a, err = decoder.Decode() c.Check(err, Equals, io.EOF, Commentf("stream: %q", streamData)) } }
func (as *assertsSuite) TestDecoderHappyWithSeparatorsVariations(c *C) { streams := []string{ exampleBodyAndExtraHeaders, exampleEmptyBody2NlNl, exampleEmptyBodyAllDefaults, } for _, streamData := range streams { stream := bytes.NewBufferString(streamData) decoder := asserts.NewDecoderStressed(stream, 16, 1024, 1024, 1024) a, err := decoder.Decode() c.Assert(err, IsNil, Commentf("stream: %q", streamData)) checkContent(c, a, streamData) a, err = decoder.Decode() c.Check(err, Equals, io.EOF, Commentf("stream: %q", streamData)) } }
func (as *assertsSuite) TestDecoderUnexpectedEOF(c *C) { streamData := exampleBodyAndExtraHeaders + "\n" + exampleEmptyBodyAllDefaults fstHeadEnd := strings.Index(exampleBodyAndExtraHeaders, "\n\n") sndHeadEnd := len(exampleBodyAndExtraHeaders) + 1 + strings.Index(exampleEmptyBodyAllDefaults, "\n\n") for _, brk := range []int{1, fstHeadEnd / 2, fstHeadEnd, fstHeadEnd + 1, fstHeadEnd + 2, fstHeadEnd + 6} { stream := bytes.NewBufferString(streamData[:brk]) decoder := asserts.NewDecoderStressed(stream, 16, 1024, 1024, 1024) _, err := decoder.Decode() c.Check(err, Equals, io.ErrUnexpectedEOF, Commentf("brk: %d", brk)) } for _, brk := range []int{sndHeadEnd, sndHeadEnd + 1} { stream := bytes.NewBufferString(streamData[:brk]) decoder := asserts.NewDecoder(stream) _, err := decoder.Decode() c.Assert(err, IsNil) _, err = decoder.Decode() c.Check(err, Equals, io.ErrUnexpectedEOF, Commentf("brk: %d", brk)) } }
func (as *assertsSuite) TestDecoderSignatureTooBig(c *C) { decoder := asserts.NewDecoderStressed(bytes.NewBufferString(exampleBodyAndExtraHeaders), 4, 1024, 1024, 7) _, err := decoder.Decode() c.Assert(err, ErrorMatches, `error reading assertion signature: maximum size exceeded while looking for delimiter "\\n\\n"`) }
func (as *assertsSuite) TestDecoderBodyTooBig(c *C) { decoder := asserts.NewDecoderStressed(bytes.NewBufferString(exampleBodyAndExtraHeaders), 1024, 1024, 5, 1024) _, err := decoder.Decode() c.Assert(err, ErrorMatches, "assertion body length 8 exceeds maximum body size") }