func (s *S) TestExportEnvironmentsBackward(c *gocheck.C) { envNames := []string{ "TSURU_S3_ACCESS_KEY_ID", "TSURU_S3_SECRET_KEY", "TSURU_APPNAME", "TSURU_HOST", "TSURU_S3_ENDPOINT", "TSURU_S3_LOCATIONCONSTRAINT", "TSURU_S3_BUCKET", "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} if strings.HasPrefix(name, "TSURU_S3_") { envVar.InstanceName = s3InstanceName } 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 { a := app.App{Name: body.Client} if err := a.Get(); 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", token.Token) authorizationRequiredHandler(authorizedOutputHandler).ServeHTTP(recorder, request) c.Assert(recorder.Code, gocheck.Equals, http.StatusUnauthorized) }
func (c *tokenCmd) Run(context *cmd.Context, client *cmd.Client) error { err := config.ReadAndWatchConfigFile(c.config) if err != nil { return err } t, err := auth.CreateApplicationToken("tsr") if err != nil { return err } fmt.Fprintf(context.Stdout, t.Token) return nil }
}, 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, // and the previous result to be a *s3Env (it should be used after // createUserPolicyAction or createBucketAction). var exportEnvironmentsAction = action.Action{ Forward: func(ctx action.FWContext) (action.Result, error) { app := ctx.Params[0].(*App) err := app.Get() 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}, } env, ok := ctx.Previous.(*s3Env) if ok { variables := map[string]string{ "ENDPOINT": env.endpoint, "LOCATIONCONSTRAINT": strconv.FormatBool(env.locationConstraint), "ACCESS_KEY_ID": env.AccessKey,