1package httpmock
2
3import (
4	"net/http"
5	"os"
6	"testing"
7)
8
9func TestEnv(t *testing.T) {
10	DeactivateAndReset()
11
12	orig := os.Getenv(envVarName)
13
14	// put it in an enabled state
15	if err := os.Setenv(envVarName, ""); err != nil {
16		t.Fatal(err)
17	} else if Disabled() {
18		t.Fatal("expected not to be disabled")
19	}
20
21	client1 := &http.Client{Transport: &http.Transport{}}
22	client2 := &http.Client{Transport: &http.Transport{}}
23
24	// make sure an activation works
25	Activate()
26	ActivateNonDefault(client1)
27	ActivateNonDefault(client2)
28	if http.DefaultTransport != DefaultTransport {
29		t.Fatal("expected http.DefaultTransport to be our DefaultTransport")
30	}
31	if client1.Transport != DefaultTransport {
32		t.Fatal("expected client1.Transport to be our DefaultTransport")
33	}
34	if client2.Transport != DefaultTransport {
35		t.Fatal("expected client2.Transport to be our DefaultTransport")
36	}
37	Deactivate()
38
39	if err := os.Setenv(envVarName, "1"); err != nil {
40		t.Fatal(err)
41	} else if !Disabled() {
42		t.Fatal("expected to be disabled")
43	}
44
45	// make sure activation doesn't work
46	Activate()
47	ActivateNonDefault(client1)
48	ActivateNonDefault(client2)
49	if http.DefaultTransport == DefaultTransport {
50		t.Fatal("expected http.DefaultTransport to not be our DefaultTransport")
51	}
52	if client1.Transport == DefaultTransport {
53		t.Fatal("expected client1.Transport to not be our DefaultTransport")
54	}
55	if client2.Transport == DefaultTransport {
56		t.Fatal("expected client2.Transport to not be our DefaultTransport")
57	}
58	Deactivate()
59
60	if err := os.Setenv(envVarName, orig); err != nil {
61		t.Fatalf("could not reset %s to it's original value '%s'", envVarName, orig)
62	}
63}
64