forked from getfider/fider
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.go
90 lines (77 loc) · 2.49 KB
/
setup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package mock
import (
"github.com/getfider/fider/app"
"github.com/getfider/fider/app/models"
"github.com/getfider/fider/app/pkg/billing"
"github.com/getfider/fider/app/pkg/blob/fs"
"github.com/getfider/fider/app/pkg/email/noop"
"github.com/getfider/fider/app/pkg/env"
"github.com/getfider/fider/app/pkg/oauth"
"github.com/getfider/fider/app/storage/inmemory"
)
// DemoTenant is a mocked tenant
var DemoTenant *models.Tenant
// AvengersTenant is a mocked tenant
var AvengersTenant *models.Tenant
// JonSnow is a mocked user
var JonSnow *models.User
// AryaStark is a mocked user
var AryaStark *models.User
// NewSingleTenantServer creates a new multitenant test server
func NewSingleTenantServer() (*Server, *app.Services) {
services := createServices(false)
server := createServer(services)
env.Config.HostMode = "single"
return server, services
}
// NewServer creates a new server and services for HTTP testing
func NewServer() (*Server, *app.Services) {
services := createServices(true)
server := createServer(services)
env.Config.HostMode = "multi"
return server, services
}
// NewWorker creates a new worker and services for worker testing
func NewWorker() (*Worker, *app.Services) {
services := createServices(true)
worker := createWorker(services)
return worker, services
}
func createServices(seed bool) *app.Services {
services := &app.Services{
Tenants: inmemory.NewTenantStorage(),
Users: &inmemory.UserStorage{},
Tags: inmemory.NewTagStorage(),
Notifications: inmemory.NewNotificationStorage(),
Posts: inmemory.NewPostStorage(),
OAuth: &OAuthService{},
Emailer: noop.NewSender(),
Blobs: fs.NewStorage(env.Path("tmp")),
Billing: billing.NewClient(),
}
if seed {
DemoTenant, _ = services.Tenants.Add("Demonstration", "demo", models.TenantActive)
AvengersTenant, _ = services.Tenants.Add("Avengers", "avengers", models.TenantActive)
AvengersTenant.CNAME = "feedback.theavengers.com"
JonSnow = &models.User{
Name: "Jon Snow",
Email: "jon.snow@got.com",
Tenant: DemoTenant,
Status: models.UserActive,
Role: models.RoleAdministrator,
Providers: []*models.UserProvider{
{UID: "FB1234", Name: oauth.FacebookProvider},
},
}
services.Users.Register(JonSnow)
AryaStark = &models.User{
Name: "Arya Stark",
Email: "arya.stark@got.com",
Tenant: DemoTenant,
Status: models.UserActive,
Role: models.RoleVisitor,
}
services.Users.Register(AryaStark)
}
return services
}