(t *testing.T)
| 142 | } |
| 143 | |
| 144 | func TestPostHandshakeRequestFormat(t *testing.T) { |
| 145 | client, server := net.Pipe() |
| 146 | defer server.Close() |
| 147 | |
| 148 | cfg := Config{ |
| 149 | Caster: "caster.example.com:2101", |
| 150 | Mountpoint: "/MOUNT01", |
| 151 | Password: "secret", |
| 152 | Username: "user1", |
| 153 | UserAgent: "NTRIP MyApp/1.0", |
| 154 | Version: 2, |
| 155 | Chunked: true, |
| 156 | } |
| 157 | ntripClient := NewClient(cfg) |
| 158 | |
| 159 | errCh := make(chan error, 1) |
| 160 | go func() { |
| 161 | errCh <- ntripClient.postHandshake(client) |
| 162 | }() |
| 163 | |
| 164 | reader := bufio.NewReader(server) |
| 165 | var requestLine string |
| 166 | headers := map[string]string{} |
| 167 | for { |
| 168 | line, err := reader.ReadString('\n') |
| 169 | require.NoError(t, err) |
| 170 | line = strings.TrimRight(line, "\r\n") |
| 171 | if line == "" { |
| 172 | break |
| 173 | } |
| 174 | if requestLine == "" { |
| 175 | requestLine = line |
| 176 | continue |
| 177 | } |
| 178 | k, v, _ := strings.Cut(line, ": ") |
| 179 | headers[k] = v |
| 180 | } |
| 181 | |
| 182 | require.Equal(t, "POST /MOUNT01 HTTP/1.1", requestLine) |
| 183 | require.Equal(t, "caster.example.com:2101", headers["Host"]) |
| 184 | require.Equal(t, "Ntrip/2.0", headers["Ntrip-Version"]) |
| 185 | require.Equal(t, "NTRIP MyApp/1.0", headers["User-Agent"]) |
| 186 | require.Equal(t, "chunked", headers["Transfer-Encoding"]) |
| 187 | want := base64.StdEncoding.EncodeToString([]byte("user1:secret")) |
| 188 | require.Equal(t, "Basic "+want, headers["Authorization"]) |
| 189 | require.NoError(t, <-errCh) |
| 190 | } |
| 191 | |
| 192 | func TestClientWriteChunked(t *testing.T) { |
| 193 | client, server := net.Pipe() |
nothing calls this directly
no test coverage detected
searching dependent graphs…