func (s *S) TestExportEnvironmentsBackward(c *gocheck.C) { envNames := []string{ "TSURU_APP_TOKEN", } app := App{Name: "moon", Platform: "opeth", Env: make(map[string]bind.EnvVar)} for _, name := range envNames { envVar := bind.EnvVar{Name: name, Value: name, Public: false} app.Env[name] = envVar } token, err := auth.CreateApplicationToken(app.Name) c.Assert(err, gocheck.IsNil) app.Env["TSURU_APP_TOKEN"] = bind.EnvVar{Name: "TSURU_APP_NAME", Value: token.Token} err = s.conn.Apps().Insert(app) c.Assert(err, gocheck.IsNil) defer s.conn.Apps().Remove(bson.M{"name": app.Name}) ctx := action.BWContext{Params: []interface{}{&app}} exportEnvironmentsAction.Backward(ctx) copy, err := GetByName(app.Name) c.Assert(err, gocheck.IsNil) for _, name := range envNames { if _, ok := copy.Env[name]; ok { c.Errorf("Variable %q should be unexported, but it's still exported.", name) } } _, err = auth.GetToken("bearer " + token.Token) c.Assert(err, gocheck.Equals, auth.ErrInvalidToken) }
func generateAppToken(w http.ResponseWriter, r *http.Request, t *auth.Token) error { var body jToken defer r.Body.Close() err := json.NewDecoder(r.Body).Decode(&body) if err != nil { return err } if body.Client == "" { return &errors.HTTP{ Code: http.StatusBadRequest, Message: "Missing client name in JSON body", } } token, err := auth.CreateApplicationToken(body.Client) if err != nil { return err } if body.Export { if a, err := app.GetByName(body.Client); err == nil { envs := []bind.EnvVar{ { Name: "TSURU_APP_TOKEN", Value: token.Token, Public: false, }, } a.SetEnvs(envs, false) } } return json.NewEncoder(w).Encode(token) }
func (tokenCmd) Run(context *cmd.Context, client *cmd.Client) error { t, err := auth.CreateApplicationToken("tsr") if err != nil { return err } fmt.Fprintf(context.Stdout, t.Token) return nil }
func (s *HandlerSuite) TestAuthorizationRequiredHandlerAppMissng(c *gocheck.C) { token, err := auth.CreateApplicationToken("my-app") c.Assert(err, gocheck.IsNil) defer s.conn.Tokens().Remove(bson.M{"token": token.Token}) recorder := httptest.NewRecorder() request, err := http.NewRequest("GET", "/", nil) c.Assert(err, gocheck.IsNil) request.Header.Set("Authorization", "bearer "+token.Token) authorizationRequiredHandler(authorizedOutputHandler).ServeHTTP(recorder, request) c.Assert(recorder.Code, gocheck.Equals, http.StatusOK) }
conn.Apps().Remove(bson.M{"name": app.Name}) }, MinParams: 1, } // exportEnvironmentsAction exports tsuru's default environment variables in a // new app. It requires a pointer to an App instance as the first parameter. var exportEnvironmentsAction = action.Action{ Name: "export-environments", Forward: func(ctx action.FWContext) (action.Result, error) { app := ctx.Params[0].(*App) app, err := GetByName(app.Name) if err != nil { return nil, err } t, err := auth.CreateApplicationToken(app.Name) if err != nil { return nil, err } host, _ := config.GetString("host") envVars := []bind.EnvVar{ {Name: "TSURU_APPNAME", Value: app.Name}, {Name: "TSURU_HOST", Value: host}, {Name: "TSURU_APP_TOKEN", Value: t.Token}, } err = app.setEnvsToApp(envVars, false, true) if err != nil { return nil, err } return ctx.Previous, nil },