2016-02-03 05:36:17 +08:00
package views
import (
"bytes"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
"testing"
)
func TestUploadedFileHandler ( t * testing . T ) {
ts := httptest . NewServer ( http . HandlerFunc ( UploadedFileHandler ) )
defer ts . Close ( )
os . Mkdir ( "./files" , 0777 )
defer os . RemoveAll ( "./files" )
file , err := os . Create ( "./files/testfile" )
defer file . Close ( )
defer os . Remove ( file . Name ( ) )
expectedContent := [ ] byte ( "test content" )
file . Write ( expectedContent )
res , err := http . Get ( ts . URL + "/files/testfile" )
if err != nil {
t . Error ( "Error occured while getting response from test server:" , err )
}
actualContent , err := ioutil . ReadAll ( res . Body )
res . Body . Close ( )
if err != nil {
t . Error ( "Error occured while reading content from response Body: " , err )
}
if ! bytes . Equal ( actualContent , expectedContent ) {
t . Errorf ( "Actual content (%s) did not match expected content (%s)" , actualContent , expectedContent )
}
}
2016-02-05 03:43:24 +08:00
//TestAddEmptyCategory tests that if the category field is empty it should do nothing
func TestAddEmptyCategory ( t * testing . T ) {
ts := httptest . NewServer ( http . HandlerFunc ( AddCategoryFunc ) )
defer ts . Close ( )
req , err := http . NewRequest ( "POST" , ts . URL , nil )
2016-02-05 04:24:19 +08:00
req . Form = make ( map [ string ] [ ] string , 0 )
req . Form . Add ( "category" , "" )
// req.Form, _ = url.ParseQuery("category=")
2016-02-05 03:43:24 +08:00
if err != nil {
t . Errorf ( "Error occured while constracting request:%s" , err )
}
w := httptest . NewRecorder ( )
AddCategoryFunc ( w , req )
body := w . Body . String ( )
if len ( body ) != 0 {
t . Error ( "Body should be empty. Instead contained data: " , body )
}
}
2016-02-05 03:57:32 +08:00
func TestEditTaskWithWrongMethod ( t * testing . T ) {
ts := httptest . NewServer ( http . HandlerFunc ( EditTaskFunc ) )
defer ts . Close ( )
2016-08-30 23:30:26 +08:00
ts . URL = ts . URL + "/edit/"
2016-02-05 03:57:32 +08:00
req , err := http . NewRequest ( "OPTIONS" , ts . URL , nil )
if err != nil {
t . Errorf ( "Error occured while constracting request:%s" , err )
}
w := httptest . NewRecorder ( )
EditTaskFunc ( w , req )
if w . Code != http . StatusFound && message != "Method not allowed" {
2016-08-30 23:30:26 +08:00
t . Errorf ( "Message was: %s Return code was: %d. Should have been message: %s return code: %d" , message , w . Code , "Method not allowed" , http . StatusBadRequest )
2016-02-05 03:57:32 +08:00
}
}
func TestEditTaskWrongTaskName ( t * testing . T ) {
ts := httptest . NewServer ( http . HandlerFunc ( EditTaskFunc ) )
defer ts . Close ( )
ts . URL = ts . URL + "/edit/invalidID"
req , err := http . NewRequest ( "GET" , ts . URL , nil )
if err != nil {
t . Errorf ( "Error occured while constracting request:%s" , err )
}
w := httptest . NewRecorder ( )
EditTaskFunc ( w , req )
//TODO: Error should be returned as part of the string so that the message can tell
//why there was a problem.
if w . Code != http . StatusBadRequest {
t . Errorf ( "Actual status: (%d); Expected status:(%d)" , w . Code , http . StatusBadRequest )
}
}
2016-08-30 23:30:26 +08:00
func TestAddCommentWithWrongMethod ( t * testing . T ) {
ts := httptest . NewServer ( http . HandlerFunc ( AddCommentFunc ) )
defer ts . Close ( )
req , err := http . NewRequest ( "GET" , ts . URL , nil )
if err != nil {
t . Errorf ( "Error occured while constructing request: %s" , err )
}
w := httptest . NewRecorder ( )
AddCommentFunc ( w , req )
if w . Code != http . StatusBadRequest {
t . Errorf ( "Actual status: (%d); Expected status:(%d)" , w . Code , http . StatusBadRequest )
}
}