func TestInitSettings(t *testing.T) { s := helpers.Settings{} for _, test := range initSettingsTests { ret := s.InitSettings(test.envVars) if (ret == nil) != test.returnValueNull { t.Errorf("Test %s did not return correct value. Expected %t, Actual %t", test.testName, test.returnValueNull, (ret == nil)) } } }
// InitApp takes in envars and sets up the router and settings that will be used for the unstarted server. func InitApp(envVars helpers.EnvVars) (*web.Router, *helpers.Settings, error) { // Initialize the settings. settings := helpers.Settings{} if err := settings.InitSettings(envVars); err != nil { return nil, nil, err } // Cache templates templates := template.Must(template.ParseFiles(filepath.Join(envVars.BasePath, "static", "index.html"))) // Initialize the router router := InitRouter(&settings, templates) return router, &settings, nil }
func TestOAuth(t *testing.T) { mockSettings := helpers.Settings{} mockSettings.TokenContext = context.TODO() mockSettings.OAuthConfig = &oauth2.Config{ ClientID: "ClientID", ClientSecret: "ClientSecret", RedirectURL: "http://hostname.com/oauth2callback", Scopes: []string{"openid"}, Endpoint: oauth2.Endpoint{ AuthURL: "http://loginURL.com/oauth/authorize", TokenURL: "http://tokenURL.com/oauth/token", }, } mockSettings.StateGenerator = func() (string, error) { return "state", nil } for _, test := range oauthTests { // Initialize a new session store. store := MockSessionStore{} store.ResetSessionData(test.SessionData, "") mockSettings.Sessions = store // Setup a test route on the API router (which is guarded by OAuth) response, request := NewTestRequest("GET", "/v2/test", nil) router := controllers.InitRouter(&mockSettings, &template.Template{}) secureRouter := router.Subrouter(controllers.SecureContext{}, "/") apiRouter := secureRouter.Subrouter(controllers.APIContext{}, "/v2") apiRouter.Middleware((*controllers.APIContext).OAuth) apiRouter.Get("/test", func(c *controllers.APIContext, rw web.ResponseWriter, r *web.Request) { fmt.Fprintf(rw, "test") }) // Make the request and check. router.ServeHTTP(response, request) if response.Header().Get("Location") != test.ExpectedLocation { t.Errorf("Test %s did not meet expected location header.\nExpected %s.\nFound %s.\n", test.TestName, test.ExpectedLocation, response.Header().Get("Location")) } if !strings.Contains(response.Body.String(), test.ExpectedResponse) { t.Errorf("Test %s did not contain expected value.\nExpected %s.\n Found (%s)\n.", test.TestName, test.ExpectedResponse, response.Body.String()) } if response.Code != test.ExpectedCode { t.Errorf("Test %s did not meet expected code.\nExpected %d.\nFound %d.\n", test.TestName, test.ExpectedCode, response.Code) } } }
// CreateRouterWithMockSession will create a settings with the appropriate envVars and load the mock session with the session data. func CreateRouterWithMockSession(sessionData map[string]interface{}, envVars helpers.EnvVars) (*web.Router, *MockSessionStore) { // Initialize settings. settings := helpers.Settings{} settings.InitSettings(envVars) // Initialize a new session store. store := MockSessionStore{} store.ResetSessionData(sessionData, "") // Override the session store. settings.Sessions = store // Create the router. router := controllers.InitRouter(&settings, &template.Template{}) return router, &store }
func TestGetValidToken(t *testing.T) { mockRequest, _ := http.NewRequest("GET", "", nil) mockSettings := helpers.Settings{} mockSettings.TokenContext = context.TODO() for _, test := range getValidTokenTests { // Initialize a new session store. store := testhelpers.MockSessionStore{} store.ResetSessionData(test.sessionData, test.sessionName) mockSettings.Sessions = store value := helpers.GetValidToken(mockRequest, &mockSettings) if (value == nil) == test.returnValueNull { } else { t.Errorf("Test %s did not meet expected value. Expected: %t. Actual: %t\n", test.testName, test.returnValueNull, (value == nil)) } } }