package testing import ( "bytes" "net/http" "net/http/cookiejar" "testing" "time" chat "git.wens.org.uk/chat/internal" "github.com/golang-jwt/jwt" ) func createJWT(username string) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "exp": time.Now().Add(5 * time.Minute).Unix(), "username": username, }) tokenString, err := token.SignedString([]byte(chat.JwtSecret)) return tokenString, err } func TestAddServer(t *testing.T) { token, err := createJWT("testersson") if err != nil { t.Fatalf("could not create jwt: %v", err) } client := &http.Client{Jar: &cookiejar.Jar{}} req, err := http.NewRequest("POST", "http://"+chat.Address+"/createserver", bytes.NewBuffer([]byte(`{"name":"newserver"}`))) if err != nil { t.Fatalf("could not create POST request: %v", err) } req.Header.Set("Token", token) res, err := client.Do(req) if err != nil { t.Fatalf("could not reach chat server: %v", err) } if res.StatusCode != http.StatusCreated { t.Errorf("unexpected return code from add server. Got: %v and expected %v\n", res.StatusCode, http.StatusCreated) } }