aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/updater/winhttp/winhttp_test.go
blob: 42f38caa48d2fde36427af47810685ab6c214500 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* SPDX-License-Identifier: MIT
 *
 * Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
 */

package winhttp

import (
	"fmt"
	"io"
	"io/ioutil"
	"testing"
)

type progressPrinter struct {
	downloaded uint64
	total      uint64
}

func (pp *progressPrinter) Write(p []byte) (int, error) {
	bytes := len(p)
	pp.downloaded += uint64(bytes)
	fmt.Printf("%d/%d bytes, %f%%\n", pp.downloaded, pp.total, float64(pp.downloaded)/float64(pp.total)*100.0)
	return bytes, nil
}

func TestResponse(t *testing.T) {
	r, err := Get("WinHTTP Test Suite/1.0", "https://www.zx2c4.com/ip")
	if err != nil {
		t.Fatal(err)
	}
	length, err := r.Length()
	if err != nil {
		t.Fatal(err)
	}
	fmt.Printf("The length is %d\n", length)
	bytes, err := ioutil.ReadAll(r)
	if err != nil {
		t.Fatal(err)
	}
	fmt.Println(string(bytes))
	r.Close()

	r, err = Get("WinHTTP Test Suite/1.0", "https://speed.hetzner.de/10GB.bin")
	if err != nil {
		t.Fatal(err)
	}
	length, err = r.Length()
	if err != nil {
		t.Fatal(err)
	}
	_, err = io.Copy(&progressPrinter{total: length}, r)
	if err != nil {
		t.Fatal(err)
	}
	r.Close()
}