mirror of
https://github.com/fleetdm/fleet
synced 2026-05-06 14:58:33 +00:00
108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
Testing
|
|
=======
|
|
|
|
## Full test suite
|
|
|
|
To execute all of the tests that CI will execute, run the following from the root of the repository:
|
|
|
|
```
|
|
make test
|
|
```
|
|
|
|
It is a good idea to run `make test` before submitting a Pull Request.
|
|
|
|
#### Go unit tests
|
|
|
|
To run all Go unit tests, run the following:
|
|
|
|
```
|
|
make test-go
|
|
```
|
|
|
|
### Database Tests
|
|
|
|
To run database tests set environment variables as follows.
|
|
|
|
```
|
|
export MYSQL_PORT_3306_TCP_ADDR=192.168.99.100
|
|
export MYSQL_TEST=1
|
|
```
|
|
|
|
### Email Tests
|
|
|
|
To run email related unit tests using MailHog set the following environment
|
|
variable.
|
|
|
|
```
|
|
export MAIL_TEST=1
|
|
```
|
|
|
|
#### JavaScript unit tests
|
|
|
|
To run all JavaScript unit tests, run the following:
|
|
|
|
```
|
|
make test-js
|
|
```
|
|
|
|
#### Go linters
|
|
|
|
To run all Go linters and static analyzers, run the following:
|
|
|
|
```
|
|
make lint-go
|
|
```
|
|
|
|
# Integration Tests
|
|
|
|
By default, tests that require external dependecies like Mysql or Redis are skipped. The tests can be enabled by setting `MYSQL_TEST=true` and `REDIS_TEST=true` environment variables. MYSQL will try to connect with the following credentials.
|
|
```
|
|
user = "kolide"
|
|
password = "kolide"
|
|
database = "kolide"
|
|
host = "127.0.0.1"
|
|
```
|
|
Redis tests expect a redis instance at `127.0.0.1:6379`.
|
|
|
|
|
|
Both the Redis and MySQL tests will also be automatically enabled with Docker links. You can check out the CircleCI configuration file(`circle.yml`) for an example of how to use Docker links to run integration tests.
|
|
#### JavaScript linters
|
|
|
|
To run all JavaScript linters and static analyzers, run the following:
|
|
|
|
```
|
|
make lint-js
|
|
```
|
|
|
|
#### Viewing test coverage
|
|
|
|
When you run `make test` or `make test-go` from the root of the repository, test coverage reports are generated in every subpackage. For example, the `server` subpackage will have a coverage report generated in `./server/server.cover`
|
|
|
|
To explore a test coverage report on a line-by-line basis in the browser, run the following:
|
|
|
|
```bash
|
|
# substitute ./datastore/datastore.cover, etc
|
|
go tool cover -html=./server/server.cover
|
|
```
|
|
|
|
To view test a test coverage report in a terminal, run the following:
|
|
|
|
```bash
|
|
# substitute ./datastore/datastore.cover, etc
|
|
go tool cover -func=./server/server.cover
|
|
```
|
|
|
|
### Email
|
|
|
|
#### Testing email using MailHog
|
|
|
|
To intercept sent emails while running a Fleet development environment, make sure that you've set the SMTP address to `<docker host ip>:1025` and leave the username and password blank. Then, visit `<docker host ip>:8025` in a web browser to view the [MailHog](https://github.com/mailhog/MailHog) UI.
|
|
|
|
For example, if docker is running natively on your `localhost`, then your mail settings should look something like:
|
|
|
|
```yaml
|
|
mail:
|
|
address: localhost:1025
|
|
```
|
|
|
|
`localhost:1025` is the default configuration. You can use `fleet config_dump` to see the values which Fleet is using given your configuration.
|