You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.2 KiB

  1. package main
  2. import (
  3. "bytes"
  4. "net/http"
  5. "net/http/httptest"
  6. "os"
  7. "testing"
  8. )
  9. var mux = http.NewServeMux()
  10. var mxTripper = newMatrixTripper()
  11. func TestMain(m *testing.M) {
  12. setup(envVars{
  13. BaseURL: "http://go.neb",
  14. DatabaseType: "sqlite3",
  15. DatabaseURL: ":memory:",
  16. }, mux, &http.Client{
  17. Transport: mxTripper,
  18. })
  19. exitCode := m.Run()
  20. os.Exit(exitCode)
  21. }
  22. func TestConfigureClient(t *testing.T) {
  23. mxTripper.ClearHandlers()
  24. mockWriter := httptest.NewRecorder()
  25. syncChan := make(chan string)
  26. mxTripper.HandlePOSTFilter("@link:hyrule")
  27. mxTripper.Handle("GET", "/_matrix/client/r0/sync",
  28. func(req *http.Request) (*http.Response, error) {
  29. syncChan <- "sync"
  30. return newResponse(200, `{
  31. "next_batch":"11_22_33_44",
  32. "rooms": {}
  33. }`), nil
  34. },
  35. )
  36. mockReq, _ := http.NewRequest("POST", "http://go.neb/admin/configureClient", bytes.NewBufferString(`
  37. {
  38. "UserID":"@link:hyrule",
  39. "HomeserverURL":"http://hyrule.loz",
  40. "AccessToken":"dangeroustogoalone",
  41. "Sync":true,
  42. "AutoJoinRooms":true
  43. }`))
  44. mux.ServeHTTP(mockWriter, mockReq)
  45. expectCode := 200
  46. if mockWriter.Code != expectCode {
  47. t.Errorf("TestConfigureClient wanted HTTP status %d, got %d", expectCode, mockWriter.Code)
  48. }
  49. <-syncChan
  50. }