(t *testing.T)
| 781 | } |
| 782 | |
| 783 | func TestLogSourceIPs(t *testing.T) { |
| 784 | var level log.Level |
| 785 | require.NoError(t, level.Set("info")) |
| 786 | cfg := Config{ |
| 787 | HTTPMiddleware: []middleware.Interface{middleware.Log{Log: log.Global()}}, |
| 788 | MetricsNamespace: "testing_mux", |
| 789 | LogLevel: level, |
| 790 | LogSourceIPs: true, |
| 791 | } |
| 792 | setAutoAssignedPorts(DefaultNetwork, &cfg) |
| 793 | |
| 794 | startServer := func(cfg Config) *Server { |
| 795 | prometheus.DefaultRegisterer = prometheus.NewRegistry() |
| 796 | server, err := New(cfg) |
| 797 | require.NoError(t, err) |
| 798 | |
| 799 | server.HTTP.HandleFunc("/error500", func(w http.ResponseWriter, _ *http.Request) { |
| 800 | w.WriteHeader(500) |
| 801 | }) |
| 802 | |
| 803 | go func() { |
| 804 | require.NoError(t, server.Run()) |
| 805 | }() |
| 806 | |
| 807 | return server |
| 808 | } |
| 809 | |
| 810 | t.Run("without PROXY protocol", func(t *testing.T) { |
| 811 | logger := newFakeLogger() |
| 812 | cfg.Log = logger |
| 813 | |
| 814 | server := startServer(cfg) |
| 815 | defer server.Shutdown() |
| 816 | |
| 817 | logger.assertNotContains(t, "sourceIPs") |
| 818 | |
| 819 | req, err := http.NewRequest("GET", httpTarget(server, "/error500"), nil) |
| 820 | require.NoError(t, err) |
| 821 | _, err = http.DefaultClient.Do(req) |
| 822 | require.NoError(t, err) |
| 823 | |
| 824 | logger.assertContains(t, "sourceIPs=127.0.0.1") |
| 825 | }) |
| 826 | |
| 827 | t.Run("with PROXY protocol", func(t *testing.T) { |
| 828 | logger := newFakeLogger() |
| 829 | cfg.Log = logger |
| 830 | cfg.ProxyProtocolEnabled = true |
| 831 | |
| 832 | server := startServer(cfg) |
| 833 | defer server.Shutdown() |
| 834 | |
| 835 | logger.assertNotContains(t, "sourceIPs") |
| 836 | |
| 837 | fakeSourceIP := "1.2.3.4" |
| 838 | proxyHeader := fmt.Sprintf("PROXY TCP4 %s 192.168.0.1 51234 80\r\n", fakeSourceIP) |
| 839 | client := &http.Client{ |
| 840 | Transport: &http.Transport{ |
nothing calls this directly
no test coverage detected