1// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package h2c
6
7import (
8	"bufio"
9	"bytes"
10	"fmt"
11	"log"
12	"net/http"
13	"testing"
14
15	"golang.org/x/net/http2"
16)
17
18func TestSettingsAckSwallowWriter(t *testing.T) {
19	var buf bytes.Buffer
20	swallower := newSettingsAckSwallowWriter(bufio.NewWriter(&buf))
21	fw := http2.NewFramer(swallower, nil)
22	fw.WriteSettings(http2.Setting{http2.SettingMaxFrameSize, 2})
23	fw.WriteSettingsAck()
24	fw.WriteData(1, true, []byte{})
25	swallower.Flush()
26
27	fr := http2.NewFramer(nil, bufio.NewReader(&buf))
28
29	f, err := fr.ReadFrame()
30	if err != nil {
31		t.Fatal(err)
32	}
33	if f.Header().Type != http2.FrameSettings {
34		t.Fatalf("Expected first frame to be SETTINGS. Got: %v", f.Header().Type)
35	}
36
37	f, err = fr.ReadFrame()
38	if err != nil {
39		t.Fatal(err)
40	}
41	if f.Header().Type != http2.FrameData {
42		t.Fatalf("Expected first frame to be DATA. Got: %v", f.Header().Type)
43	}
44}
45
46func ExampleNewHandler() {
47	handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
48		fmt.Fprint(w, "Hello world")
49	})
50	h2s := &http2.Server{
51		// ...
52	}
53	h1s := &http.Server{
54		Addr:    ":8080",
55		Handler: NewHandler(handler, h2s),
56	}
57	log.Fatal(h1s.ListenAndServe())
58}
59