diff --git a/.travis.yml b/.travis.yml
index 4c90f5939..1c513a5a8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -27,7 +27,8 @@ env:
UI_SECRET: tempString
MAX_JOB_WORKERS: 3
SECRET_KEY: 1234567890123456
- AUTH_MODE: db_auth
+ AUTH_MODE: db_auth
+ SELF_REGISTRATION: "on"
before_install:
- sudo ./tests/hostcfg.sh
diff --git a/controllers/controllers_test.go b/controllers/controllers_test.go
index eadfdc9c5..b4cb4fe2c 100644
--- a/controllers/controllers_test.go
+++ b/controllers/controllers_test.go
@@ -1,9 +1,206 @@
package controllers
import (
+ "net/http"
+ "net/http/httptest"
+ //"net/url"
+ "path/filepath"
+ "runtime"
"testing"
+
+ "fmt"
+ "strings"
+
+ "github.com/astaxie/beego"
+ //"github.com/dghubble/sling"
+ "github.com/stretchr/testify/assert"
)
-func TestMain(t *testing.T) {
+//const (
+// adminName = "admin"
+// adminPwd = "Harbor12345"
+//)
+
+//type usrInfo struct {
+// Name string
+// Passwd string
+//}
+
+//var admin *usrInfo
+
+func init() {
+
+ _, file, _, _ := runtime.Caller(1)
+ apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".."+string(filepath.Separator))))
+ beego.BConfig.WebConfig.Session.SessionOn = true
+ beego.TestBeegoInit(apppath)
+ beego.AddTemplateExt("htm")
+
+ beego.Router("/", &IndexController{})
+ beego.Router("/dashboard", &DashboardController{})
+ beego.Router("/project", &ProjectController{})
+ beego.Router("/repository", &RepositoryController{})
+ beego.Router("/sign_up", &SignUpController{})
+ beego.Router("/add_new", &AddNewController{})
+ beego.Router("/account_setting", &AccountSettingController{})
+ beego.Router("/change_password", &ChangePasswordController{})
+ beego.Router("/admin_option", &AdminOptionController{})
+ beego.Router("/forgot_password", &ForgotPasswordController{})
+ beego.Router("/reset_password", &ResetPasswordController{})
+ beego.Router("/search", &SearchController{})
+
+ beego.Router("/login", &CommonController{}, "post:Login")
+ beego.Router("/log_out", &CommonController{}, "get:LogOut")
+ beego.Router("/reset", &CommonController{}, "post:ResetPassword")
+ beego.Router("/userExists", &CommonController{}, "post:UserExists")
+ beego.Router("/sendEmail", &CommonController{}, "get:SendEmail")
+ beego.Router("/language", &CommonController{}, "get:SwitchLanguage")
+
+ beego.Router("/optional_menu", &OptionalMenuController{})
+ beego.Router("/navigation_header", &NavigationHeaderController{})
+ beego.Router("/navigation_detail", &NavigationDetailController{})
+ beego.Router("/sign_in", &SignInController{})
+
+ //Init user Info
+ //admin = &usrInfo{adminName, adminPwd}
+
}
+// TestMain is a sample to run an endpoint test
+func TestMain(t *testing.T) {
+ assert := assert.New(t)
+
+ // v := url.Values{}
+ // v.Set("principal", "admin")
+ // v.Add("password", "Harbor12345")
+
+ r, _ := http.NewRequest("GET", "/", nil)
+ w := httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "
page_title_index"), "http respond should have 'page_title_index'")
+
+ r, _ = http.NewRequest("GET", "/dashboard", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/dashboard' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_dashboard"), "http respond should have 'page_title_dashboard'")
+
+ r, _ = http.NewRequest("GET", "/project", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/project' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_project"), "http respond should have 'page_title_project'")
+
+ r, _ = http.NewRequest("GET", "/repository", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/repository' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_repository"), "http respond should have 'page_title_repository'")
+
+ r, _ = http.NewRequest("GET", "/sign_up", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/sign_up' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_sign_up"), "http respond should have 'page_title_sign_up'")
+
+ r, _ = http.NewRequest("GET", "/add_new", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(401), w.Code, "'/add_new' httpStatusCode should be 401")
+
+ r, _ = http.NewRequest("GET", "/account_setting", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/account_setting' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_account_setting"), "http respond should have 'page_title_account_setting'")
+
+ r, _ = http.NewRequest("GET", "/change_password", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/change_password' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_change_password"), "http respond should have 'page_title_change_password'")
+
+ r, _ = http.NewRequest("GET", "/admin_option", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/admin_option' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_admin_option"), "http respond should have 'page_title_admin_option'")
+
+ r, _ = http.NewRequest("GET", "/forgot_password", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/forgot_password' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_forgot_password"), "http respond should have 'page_title_forgot_password'")
+
+ r, _ = http.NewRequest("GET", "/reset_password", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(302), w.Code, "'/reset_password' httpStatusCode should be 302")
+
+ r, _ = http.NewRequest("GET", "/search", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/search' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), "page_title_search"), "http respond should have 'page_title_searc'")
+
+ r, _ = http.NewRequest("POST", "/login", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(401), w.Code, "'/login' httpStatusCode should be 401")
+
+ r, _ = http.NewRequest("GET", "/log_out", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(200), w.Code, "'/log_out' httpStatusCode should be 200")
+ assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), ""), "http respond should be empty")
+
+ r, _ = http.NewRequest("POST", "/reset", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(400), w.Code, "'/reset' httpStatusCode should be 400")
+
+ r, _ = http.NewRequest("POST", "/userExists", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(500), w.Code, "'/userExists' httpStatusCode should be 500")
+
+ r, _ = http.NewRequest("GET", "/sendEmail", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(400), w.Code, "'/sendEmail' httpStatusCode should be 400")
+
+ r, _ = http.NewRequest("GET", "/language", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ assert.Equal(int(302), w.Code, "'/language' httpStatusCode should be 302")
+
+ r, _ = http.NewRequest("GET", "/optional_menu", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ //fmt.Printf("/optional_menu: %s\n", w.Body)
+ assert.Equal(int(200), w.Code, "'/optional_menu' httpStatusCode should be 200")
+ //assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), " "), "http respond should have ' '")
+
+ r, _ = http.NewRequest("GET", "/navigation_header", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ //fmt.Printf("/navigation_header: %s\n", w.Body)
+ assert.Equal(int(200), w.Code, "'/navigation_header' httpStatusCode should be 200")
+ //assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), " "), "http respond should have ' '")
+
+ r, _ = http.NewRequest("GET", "/navigation_detail", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ //fmt.Printf("/navigation_detail: %s\n", w.Body)
+ assert.Equal(int(200), w.Code, "'/navigation_detail' httpStatusCode should be 200")
+ //assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), " "), "http respond should have ' '")
+
+ r, _ = http.NewRequest("GET", "/sign_in", nil)
+ w = httptest.NewRecorder()
+ beego.BeeApp.Handlers.ServeHTTP(w, r)
+ //fmt.Printf("/sign_in: %s\n", w.Body)
+ assert.Equal(int(200), w.Code, "'/sign_in' httpStatusCode should be 200")
+ //assert.Equal(true, strings.Contains(fmt.Sprintf("%s", w.Body), " "), "http respond should have ' '")
+
+}