package Auth import ( "fmt" "net/http" "net/http/httptest" "os" "path" "runtime" "strings" "testing" "git.tovijaeschke.xyz/tovi/SuddenImpactRecords/Database" "github.com/gorilla/mux" ) func init() { // Fix working directory for tests _, filename, _, _ := runtime.Caller(0) dir := path.Join(path.Dir(filename), "..") err := os.Chdir(dir) if err != nil { panic(err) } Database.InitTest() r = mux.NewRouter() } func Test_UpdatePassword(t *testing.T) { t.Log("Testing UpdatePassword...") r.HandleFunc("/admin/login", Logout).Methods("POST") r.HandleFunc("/admin/user/{userID}/update-password", UpdatePassword).Methods("PUT") ts := httptest.NewServer(r) defer ts.Close() userData, err := createTestUser(true) if err != nil { t.Errorf("Expected nil, recieved %s", err.Error()) t.FailNow() } postJson := ` { "email": "%s", "password": "password" } ` postJson = fmt.Sprintf(postJson, userData.Email) res, err := http.Post(ts.URL+"/admin/login", "application/json", strings.NewReader(postJson)) if err != nil { t.Errorf("Expected nil, recieved %s", err.Error()) return } if res.StatusCode != http.StatusOK { t.Errorf("Expected %d, recieved %d", http.StatusOK, res.StatusCode) return } if len(res.Cookies()) != 1 { t.Errorf("Expected cookies len 1, recieved %d", len(res.Cookies())) return } postJson = ` { "password": "new_password", "confirm_password": "new_password" } ` req, err := http.NewRequest("PUT", fmt.Sprintf( "%s/admin/user/%s/update-password", ts.URL, userData.ID, ), strings.NewReader(postJson)) if err != nil { t.Errorf("Expected nil, recieved %s", err.Error()) return } req.AddCookie(res.Cookies()[0]) res, err = http.DefaultClient.Do(req) if err != nil { t.Errorf("Expected nil, recieved %s", err.Error()) return } if res.StatusCode != http.StatusOK { t.Errorf("Expected %d, recieved %d", http.StatusOK, res.StatusCode) return } }