func (c *Context) Start() { getEnv() db, err := sql.Open("postgres", databaseURL) if err != nil { log.Fatal(err) } else if err := db.Ping(); err != nil { log.Fatal(err) } wf, err := strconv.Atoi(bcryptWorkFactor) if err != nil { log.Fatal(err) } c.DB = db c.Accounts = accounts.New(&hash.BCrypt{wf}, db) c.Connections = connections.New(db) c.Policies = policies.New(db) c.Osins = osins.New(db) c.States = states.New(db) if err := c.Accounts.CreateSchemas(); err != nil { log.Fatal(err) } else if err := c.Connections.CreateSchemas(); err != nil { log.Fatal(err) } else if err := c.Policies.CreateSchemas(); err != nil { log.Fatal(err) } else if err := c.Osins.CreateSchemas(); err != nil { log.Fatal(err) } else if err := c.States.CreateSchemas(); err != nil { log.Fatal(err) } }
func TestMain(m *testing.M) { c, db, err := dockertest.OpenPostgreSQLContainerConnection(15, time.Second) if err != nil { log.Fatalf("Could not connect to database: %s", err) } defer c.KillRemove() accountStore := acpg.New(&hash.BCrypt{10}, db) policyStore := ppg.New(db) osinStore := opg.New(db) connectionStore := cpg.New(db) stateStore := oapg.New(db) registry := provider.NewRegistry([]provider.Provider{&prov{}}) j := hjwt.New([]byte(hjwt.TestCertificates[0][1]), []byte(hjwt.TestCertificates[1][1])) if err := connectionStore.CreateSchemas(); err != nil { log.Fatalf("Could not set up schemas: %v", err) } else if err := policyStore.CreateSchemas(); err != nil { log.Fatalf("Could not set up schemas: %v", err) } else if err := accountStore.CreateSchemas(); err != nil { log.Fatalf("Could not set up schemas: %v", err) } else if err := osinStore.CreateSchemas(); err != nil { log.Fatalf("Could not set up schemas: %v", err) } else if err := stateStore.CreateSchemas(); err != nil { log.Fatalf("Could not set up schemas: %v", err) } handler = &Handler{ OAuthConfig: DefaultConfig(), OAuthStore: osinStore, JWT: j, Accounts: accountStore, Policies: policyStore, Guard: new(guard.Guard), Connections: connectionStore, States: stateStore, Providers: registry, Issuer: "hydra", Audience: "tests", Middleware: host.New(policyStore, j), } pol := policy.DefaultPolicy{ ID: uuid.New(), Description: "", Effect: policy.AllowAccess, Subjects: []string{}, Permissions: []string{"authorize"}, Resources: []string{"/oauth2/authorize"}, Conditions: []policy.DefaultCondition{}, } if err := osinStore.CreateClient(&osin.DefaultClient{clientID, "secret", "/callback", ""}); err != nil { log.Fatalf("Could create client: %s", err) } else if err := osinStore.CreateClient(&osin.DefaultClient{"working-client-2", "secret", "/callback", ""}); err != nil { log.Fatalf("Could create client: %s", err) } else if _, err := accountStore.Create(account.CreateAccountRequest{ ID: accID, Username: "******", Password: "******", Data: "{}", }); err != nil { log.Fatalf("Could create account: %s", err) } else if err := policyStore.Create(&pol); err != nil { log.Fatalf("Could create client: %s", err) } else if err := connectionStore.Create(&connection.DefaultConnection{ ID: uuid.New(), Provider: "MockProvider", LocalSubject: accID, RemoteSubject: "remote-id", }); err != nil { log.Fatalf("Could create client: %s", err) } os.Exit(m.Run()) }