@@ -9,39 +9,83 @@ import (
9
9
"github.com/neicnordic/sensitive-data-archive/internal/broker"
10
10
"github.com/neicnordic/sensitive-data-archive/internal/database"
11
11
"github.com/neicnordic/sensitive-data-archive/internal/helper"
12
+ "github.com/neicnordic/sensitive-data-archive/internal/storage"
12
13
13
14
"github.com/stretchr/testify/assert"
14
15
"github.com/stretchr/testify/suite"
15
16
)
16
17
17
18
type HealthcheckTestSuite struct {
18
- ProxyTests
19
+ suite.Suite
20
+ S3Fakeconf storage.S3Conf // fakeserver
21
+ S3conf storage.S3Conf // actual s3 container
22
+ DBConf database.DBConf
23
+ fakeServer * FakeServer
24
+ MQConf broker.MQConf
25
+ messenger * broker.AMQPBroker
26
+ database * database.SDAdb
19
27
}
20
28
21
29
func TestHealthTestSuite (t * testing.T ) {
22
30
suite .Run (t , new (HealthcheckTestSuite ))
23
31
}
24
32
25
33
func (suite * HealthcheckTestSuite ) SetupTest () {
26
- // Reuse the setup from Proxy
27
- suite .ProxyTests .SetupTest ()
34
+ suite .fakeServer = startFakeServer ("9024" )
35
+
36
+ // Create an s3config for the fake server
37
+ suite .S3Fakeconf = storage.S3Conf {
38
+ URL : "http://127.0.0.1" ,
39
+ Port : 9024 ,
40
+ AccessKey : "someAccess" ,
41
+ SecretKey : "someSecret" ,
42
+ Bucket : "buckbuck" ,
43
+ Region : "us-east-1" ,
44
+ }
45
+
46
+ // Create a configuration for the fake MQ
47
+ suite .MQConf = broker.MQConf {
48
+ Host : "127.0.0.1" ,
49
+ Port : MQport ,
50
+ User : "guest" ,
51
+ Password : "guest" ,
52
+ Vhost : "/" ,
53
+ Exchange : "" ,
54
+ }
55
+
56
+ suite .messenger = & broker.AMQPBroker {}
57
+
58
+ // Create a database configuration for the fake database
59
+ suite .DBConf = database.DBConf {
60
+ Host : "127.0.0.1" ,
61
+ Port : DBport ,
62
+ User : "postgres" ,
63
+ Password : "rootpasswd" ,
64
+ Database : "sda" ,
65
+ CACert : "" ,
66
+ SslMode : "disable" ,
67
+ ClientCert : "" ,
68
+ ClientKey : "" ,
69
+ }
70
+
71
+ suite .database = & database.SDAdb {}
28
72
}
29
73
30
74
func (suite * HealthcheckTestSuite ) TearDownTest () {
31
- // Reuse the teardown from Proxy
32
- suite .ProxyTests . TearDownTest ()
75
+ suite . fakeServer . Close ()
76
+ suite .database . Close ()
33
77
}
34
78
35
79
func (suite * HealthcheckTestSuite ) TestHttpsGetCheck () {
36
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, suite .messenger , suite .database , new (tls.Config ))
80
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, suite .messenger , suite .database , new (tls.Config ))
37
81
38
82
url , _ := p .getS3ReadyPath ()
39
83
assert .NoError (suite .T (), p .httpsGetCheck (url ))
40
84
assert .Error (suite .T (), p .httpsGetCheck ("http://127.0.0.1:8888/nonexistent" ), "404 should fail" )
41
85
}
42
86
43
87
func (suite * HealthcheckTestSuite ) TestS3URL () {
44
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, suite .messenger , suite .database , new (tls.Config ))
88
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, suite .messenger , suite .database , new (tls.Config ))
45
89
46
90
_ , err := p .getS3ReadyPath ()
47
91
assert .NoError (suite .T (), err )
@@ -57,7 +101,7 @@ func (suite *HealthcheckTestSuite) TestHealthchecks() {
57
101
database , _ := database .NewSDAdb (suite .DBConf )
58
102
messenger , err := broker .NewMQ (suite .MQConf )
59
103
assert .NoError (suite .T (), err )
60
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
104
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
61
105
62
106
w := httptest .NewRecorder ()
63
107
p .CheckHealth (w , httptest .NewRequest (http .MethodGet , "https://dummy/health" , nil ))
@@ -72,7 +116,7 @@ func (suite *HealthcheckTestSuite) TestClosedDBHealthchecks() {
72
116
database , _ := database .NewSDAdb (suite .DBConf )
73
117
messenger , err := broker .NewMQ (suite .MQConf )
74
118
assert .NoError (suite .T (), err )
75
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
119
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
76
120
77
121
// Check that 200 is reported
78
122
w := httptest .NewRecorder ()
@@ -95,7 +139,7 @@ func (suite *HealthcheckTestSuite) TestNoS3Healthchecks() {
95
139
database , _ := database .NewSDAdb (suite .DBConf )
96
140
messenger , err := broker .NewMQ (suite .MQConf )
97
141
assert .NoError (suite .T (), err )
98
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
142
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
99
143
100
144
// S3 unavailable, check that 503 is reported
101
145
w := httptest .NewRecorder ()
@@ -111,7 +155,7 @@ func (suite *HealthcheckTestSuite) TestNoMQHealthchecks() {
111
155
database , _ := database .NewSDAdb (suite .DBConf )
112
156
messenger , err := broker .NewMQ (suite .MQConf )
113
157
assert .NoError (suite .T (), err )
114
- p := NewProxy (suite .S3conf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
158
+ p := NewProxy (suite .S3Fakeconf , & helper.AlwaysAllow {}, messenger , database , new (tls.Config ))
115
159
116
160
// Messenger unavailable, check that 503 is reported
117
161
p .messenger .Conf .Port = 123456
0 commit comments