func (uc UserCreator) Run() { for { user := <-uc.In Run("cf", "create-user", user.Name, "password") Run("cf", "set-space-role", user.Name, uc.OrgName, "benchmark", "SpaceDeveloper") Run("cf", "set-org-role", user.Name, uc.OrgName, user.OrgRole) config := warrant.Config{Host: context.UAADomain, SkipVerifySSL: true} adminToken := fetchAdminToken(config) userService := warrant.NewUsersService(config) users, err := userService.Find(warrant.UsersQuery{Filter: fmt.Sprintf("username eq '%s'", user.Name)}, adminToken) Expect(err).NotTo(HaveOccurred()) userGUID := users[0].ID user.GUID = userGUID uc.Out <- user } }
func NewRouter(mx muxer, config Config) http.Handler { requestCounter := middleware.NewRequestCounter(mx.GetRouter(), metrics.DefaultLogger) logging := middleware.NewRequestLogging(config.Logger) notificationsWriteAuthenticator := middleware.NewAuthenticator(config.UAAPublicKey, "notifications.write") databaseAllocator := middleware.NewDatabaseAllocator(config.SQLDB, config.DBLoggingEnabled) warrantConfig := warrant.Config{ Host: config.UAAHost, SkipVerifySSL: config.SkipVerifySSL, } warrantUsersService := warrant.NewUsersService(warrantConfig) warrantClientsService := warrant.NewClientsService(warrantConfig) rainmakerConfig := rainmaker.Config{ Host: config.CCHost, SkipVerifySSL: config.SkipVerifySSL, } rainmakerSpacesService := rainmaker.NewSpacesService(rainmakerConfig) rainmakerOrganizationsService := rainmaker.NewOrganizationsService(rainmakerConfig) userFinder := uaa.NewUserFinder(config.UAAClientID, config.UAAClientSecret, warrantUsersService, warrantClientsService) spaceFinder := cf.NewSpaceFinder(config.UAAClientID, config.UAAClientSecret, warrantClientsService, rainmakerSpacesService) orgFinder := cf.NewOrgFinder(config.UAAClientID, config.UAAClientSecret, warrantClientsService, rainmakerOrganizationsService) campaignEnqueuer := queue.NewCampaignEnqueuer(config.Queue) sendersRepository := models.NewSendersRepository(uuid.NewV4) campaignTypesRepository := models.NewCampaignTypesRepository(uuid.NewV4) templatesRepository := models.NewTemplatesRepository(uuid.NewV4) campaignsRepository := models.NewCampaignsRepository(uuid.NewV4) messagesRepository := models.NewMessagesRepository(util.NewClock()) sendersCollection := collections.NewSendersCollection(sendersRepository, campaignTypesRepository) templatesCollection := collections.NewTemplatesCollection(templatesRepository) campaignTypesCollection := collections.NewCampaignTypesCollection(campaignTypesRepository, sendersRepository, templatesRepository) campaignsCollection := collections.NewCampaignsCollection(campaignEnqueuer, campaignsRepository, campaignTypesRepository, templatesRepository, sendersRepository, userFinder, spaceFinder, orgFinder) campaignStatusesCollection := collections.NewCampaignStatusesCollection(campaignsRepository, messagesRepository) info.Routes{ RequestCounter: requestCounter, RequestLogging: logging, }.Register(mx) senders.Routes{ RequestLogging: logging, Authenticator: notificationsWriteAuthenticator, DatabaseAllocator: databaseAllocator, SendersCollection: sendersCollection, }.Register(mx) campaigntypes.Routes{ RequestLogging: logging, Authenticator: notificationsWriteAuthenticator, DatabaseAllocator: databaseAllocator, CampaignTypesCollection: campaignTypesCollection, }.Register(mx) templates.Routes{ RequestLogging: logging, Authenticator: notificationsWriteAuthenticator, DatabaseAllocator: databaseAllocator, TemplatesCollection: templatesCollection, }.Register(mx) campaigns.Routes{ Clock: util.NewClock(), RequestLogging: logging, Authenticator: notificationsWriteAuthenticator, DatabaseAllocator: databaseAllocator, CampaignsCollection: campaignsCollection, CampaignStatusesCollection: campaignStatusesCollection, }.Register(mx) return mx }
) var _ = Describe("UsersService", func() { var ( service warrant.UsersService token string config warrant.Config ) BeforeEach(func() { config = warrant.Config{ Host: fakeUAAServer.URL(), SkipVerifySSL: true, TraceWriter: TraceWriter, } service = warrant.NewUsersService(config) token = fakeUAAServer.ClientTokenFor("admin", []string{"scim.write", "scim.read", "password.write"}, []string{"scim", "password"}) }) Describe("Create", func() { It("creates a new user", func() { user, err := service.Create("created-user", "*****@*****.**", token) Expect(err).NotTo(HaveOccurred()) Expect(user.ID).NotTo(BeEmpty()) Expect(user.UserName).To(Equal("created-user")) Expect(user.CreatedAt).To(BeTemporally("~", time.Now().UTC(), 2*time.Millisecond)) Expect(user.UpdatedAt).To(BeTemporally("~", time.Now().UTC(), 2*time.Millisecond)) Expect(user.Version).To(Equal(0)) Expect(user.Emails).To(ConsistOf([]string{"*****@*****.**"})) Expect(user.Groups).To(ConsistOf([]warrant.Group{})) Expect(user.Active).To(BeTrue())