Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

Commit

Permalink
Update golang tests to run in docker compose
Browse files Browse the repository at this point in the history
  • Loading branch information
norling committed Nov 7, 2022
1 parent 111eef4 commit 3464fb2
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 38 deletions.
20 changes: 2 additions & 18 deletions .github/workflows/gotest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,8 @@ jobs:
- name: Check out source code
uses: actions/checkout@v3

- name: Deploy containers
run: cd dev_utils && docker-compose up -d s3 mq_server

- name: Wait for containers to start
run: |
RETRY_TIMES=0
for p in mq s3
do
until docker ps -f name=$p --format {{.Status}} | grep "(healthy)"
do echo "waiting for $p to become ready"
RETRY_TIMES=$((RETRY_TIMES+1));
if [ $RETRY_TIMES -eq 30 ]; then exit 1; fi
sleep 10;
done
done
- name: Calc coverage
run: go test -tags live -coverprofile=coverage.txt -covermode=atomic
- name: Run test container
run: cd dev_utils && GOLANG_VERSION=${{ matrix.go-version }} docker compose run tests

- name: Codecov
uses: codecov/[email protected]
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@
*.out

# log dumps
*.dump
*.dump

# coverage report
coverage.txt
12 changes: 6 additions & 6 deletions config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func (suite *TestSuite) TestConfigBroker() {
func (suite *TestSuite) TestTLSConfigBroker() {
viper.Set("broker.serverName", "broker")
viper.Set("broker.ssl", true)
viper.Set("broker.cacert", "dev_utils/certs/ca.crt")
viper.Set("broker.cacert", "/certs/ca.crt")
config, err := NewConfig()
assert.NotNil(suite.T(), config)
assert.NoError(suite.T(), err)
Expand All @@ -132,17 +132,17 @@ func (suite *TestSuite) TestTLSConfigBroker() {
assert.NoError(suite.T(), err)

viper.Set("broker.verifyPeer", true)
viper.Set("broker.clientCert", "./dev_utils/certs/client.crt")
viper.Set("broker.clientKey", "./dev_utils/certs/client.key")
viper.Set("broker.clientCert", "/certs/client.crt")
viper.Set("broker.clientKey", "/certs/client.key")
config, err = NewConfig()
assert.NotNil(suite.T(), config)
assert.NoError(suite.T(), err)
tlsBroker, err = TLSConfigBroker(config)
assert.NotNil(suite.T(), tlsBroker)
assert.NoError(suite.T(), err)

viper.Set("broker.clientCert", "./dev_utils/certs/client.pem")
viper.Set("broker.clientKey", "./dev_utils/certs/client-key.pem")
viper.Set("broker.clientCert", "/certs/client.pem")
viper.Set("broker.clientKey", "/certs/client-key.pem")
config, err = NewConfig()
assert.NotNil(suite.T(), config)
assert.NoError(suite.T(), err)
Expand All @@ -153,7 +153,7 @@ func (suite *TestSuite) TestTLSConfigBroker() {
}

func (suite *TestSuite) TestTLSConfigProxy() {
viper.Set("aws.cacert", "dev_utils/certs/ca.crt")
viper.Set("aws.cacert", "/certs/ca.crt")
config, err := NewConfig()
assert.NotNil(suite.T(), config)
assert.NoError(suite.T(), err)
Expand Down
14 changes: 7 additions & 7 deletions dev_utils/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ aws:
secretKey: "987654321"
bucket: "test"
region: "us-east-1"
cacert: "./dev_utils/certs/ca.crt"
cacert: "/certs/ca.crt"

broker:
host: "localhost"
host: "mq"
port: "5671"
user: "test"
password: "test"
Expand All @@ -19,16 +19,16 @@ broker:
routingKey: "files.inbox"
ssl: "true"
verifyPeer: "true"
cacert: "./dev_utils/certs/ca.crt"
clientCert: "./dev_utils/certs/client.crt"
clientKey: "./dev_utils/certs/client.key"
cacert: "/certs/ca.crt"
clientCert: "/certs/client.crt"
clientKey: "/certs/client.key"
# If the FQDN and hostname of the broker differ
# serverName can be set to the SAN name in the certificate
# serverName: ""

server:
cert: "./dev_utils/certs/proxy.crt"
key: "./dev_utils/certs/proxy.key"
cert: "/certs/proxy.crt"
key: "/certs/proxy.key"
users: "./dev_utils/users.csv"
jwtpubkeypath: "./dev_utils/keys/"
jwtpubkeyurl: "https://login.elixir-czech.org/oidc/jwk"
Expand Down
27 changes: 25 additions & 2 deletions dev_utils/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ services:
volumes:
- pubcert:/etc/ssl/certs

mq_server:
mq:
image: rabbitmq:3.11.2-management-alpine
container_name: mq
depends_on:
Expand Down Expand Up @@ -73,7 +73,7 @@ services:
image: neicnordic/sda-inbox-s3proxy
container_name: proxy
depends_on:
mq_server:
mq:
condition: service_healthy
s3:
condition: service_healthy
Expand Down Expand Up @@ -115,6 +115,29 @@ services:
- "8000:8000"
- "8001:8001"

tests:
image: golang:${GOLANG_VERSION:-1.18}
container_name: s3proxy-tests
profiles:
- test
command:
- "/bin/sh"
- "-c"
- "cd /app; echo 'Running go ${GOLANG_VERSION:-1.18} tests';
go install 2>/dev/null
&& go test -tags live -coverprofile=coverage.txt -covermode=atomic"
depends_on:
mq:
condition: service_healthy
s3:
condition: service_healthy
certfixer:
condition: service_completed_successfully
volumes:
- proxy_certs:/certs
- ./users.csv:/users.csv
- ..:/app

volumes:
pubcert:
s3_certs:
Expand Down
8 changes: 4 additions & 4 deletions proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func TestServeHTTP_disallowed(t *testing.T) {
secretKey: "someSecret",
bucket: "buckbuck",
region: "us-east-1",
cacert: "./dev_utils/certs/ca.crt",
cacert: "/certs/ca.crt",
}
messenger := NewMockMessenger()
proxy := NewProxy(s3conf, &AlwaysDeny{}, messenger, new(tls.Config))
Expand Down Expand Up @@ -172,7 +172,7 @@ func TestServeHTTP_S3Unresponsive(t *testing.T) {
secretKey: "someSecret",
bucket: "buckbuck",
region: "us-east-1",
cacert: "./dev_utils/certs/ca.crt",
cacert: "/certs/ca.crt",
}
messenger := NewMockMessenger()
proxy := NewProxy(s3conf, &AlwaysAllow{}, messenger, new(tls.Config))
Expand Down Expand Up @@ -201,7 +201,7 @@ func TestServeHTTP_allowed(t *testing.T) {
secretKey: "someSecret",
bucket: "buckbuck",
region: "us-east-1",
cacert: "./dev_utils/certs/ca.crt",
cacert: "/certs/ca.crt",
}
messenger := NewMockMessenger()
proxy := NewProxy(s3conf, NewAlwaysAllow(), messenger, new(tls.Config))
Expand Down Expand Up @@ -308,7 +308,7 @@ func TestMessageFormatting(t *testing.T) {
secretKey: "someSecret",
bucket: "buckbuck",
region: "us-east-1",
cacert: "./dev_utils/certs/ca.crt",
cacert: "/certs/ca.crt",
}
messenger := NewMockMessenger()
proxy := NewProxy(s3conf, &AlwaysDeny{}, messenger, new(tls.Config))
Expand Down

0 comments on commit 3464fb2

Please sign in to comment.