| 1 | package serve |
| 2 | |
| 3 | import ( |
| 4 | "net/http" |
| 5 | "net/http/httptest" |
| 6 | "testing" |
| 7 | ) |
| 8 | |
| 9 | func TestContextReadRejectsStaleSessionIdentity(t *testing.T) { |
| 10 | srv, _, _, current := newExclusiveSessionServe(t) |
| 11 | server := httptest.NewServer(srv.Handler()) |
| 12 | defer server.Close() |
| 13 | for _, test := range []struct { |
| 14 | id string |
| 15 | want int |
| 16 | }{ |
| 17 | {id: current.SessionID, want: http.StatusOK}, |
| 18 | {id: "other-session", want: http.StatusConflict}, |
| 19 | } { |
| 20 | req, err := http.NewRequest(http.MethodGet, server.URL+"/context", nil) |
| 21 | if err != nil { |
| 22 | t.Fatal(err) |
| 23 | } |
| 24 | req.Header.Set(expectedSessionIDHeader, test.id) |
| 25 | resp, err := server.Client().Do(req) |
| 26 | if err != nil { |
| 27 | t.Fatal(err) |
| 28 | } |
| 29 | _ = resp.Body.Close() |
| 30 | if resp.StatusCode != test.want { |
| 31 | t.Fatalf("session %q: status = %d, want %d", test.id, resp.StatusCode, test.want) |
| 32 | } |
| 33 | } |
| 34 | } |
| 35 |