2017-10-02 08:32:02 +00:00
|
|
|
package anonymize
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2017-11-08 10:40:04 +00:00
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2017-10-02 08:32:02 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func Test_doOnJSON(t *testing.T) {
|
|
|
|
baseConfiguration := `
|
|
|
|
{
|
|
|
|
"GraceTimeOut": 10000000000,
|
|
|
|
"Debug": false,
|
|
|
|
"CheckNewVersion": true,
|
|
|
|
"AccessLogsFile": "",
|
|
|
|
"TraefikLogsFile": "",
|
2019-04-16 13:30:09 +00:00
|
|
|
"Level": "ERROR",
|
2017-10-02 08:32:02 +00:00
|
|
|
"EntryPoints": {
|
|
|
|
"http": {
|
|
|
|
"Network": "",
|
|
|
|
"Address": ":80",
|
|
|
|
"TLS": null,
|
|
|
|
"Auth": null,
|
|
|
|
"Compress": false
|
|
|
|
},
|
|
|
|
"https": {
|
|
|
|
"Address": ":443",
|
|
|
|
"TLS": {
|
|
|
|
"MinVersion": "",
|
|
|
|
"CipherSuites": null,
|
|
|
|
"Certificates": null,
|
|
|
|
"ClientCAFiles": null
|
|
|
|
},
|
|
|
|
"Auth": null,
|
|
|
|
"Compress": false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"Cluster": null,
|
|
|
|
"Constraints": [],
|
|
|
|
"ACME": {
|
|
|
|
"Email": "foo@bar.com",
|
|
|
|
"Domains": [
|
|
|
|
{
|
|
|
|
"Main": "foo@bar.com",
|
|
|
|
"SANs": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"Main": "foo@bar.com",
|
|
|
|
"SANs": null
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Storage": "",
|
|
|
|
"StorageFile": "/acme/acme.json",
|
|
|
|
"OnDemand": true,
|
|
|
|
"OnHostRule": true,
|
|
|
|
"CAServer": "",
|
|
|
|
"EntryPoint": "https",
|
|
|
|
"DNSProvider": "",
|
|
|
|
"DelayDontCheckDNS": 0,
|
|
|
|
"ACMELogging": false,
|
2019-06-17 16:14:08 +00:00
|
|
|
"Options": null
|
2017-10-02 08:32:02 +00:00
|
|
|
},
|
|
|
|
"DefaultEntryPoints": [
|
|
|
|
"https",
|
|
|
|
"http"
|
|
|
|
],
|
|
|
|
"ProvidersThrottleDuration": 2000000000,
|
|
|
|
"MaxIdleConnsPerHost": 200,
|
|
|
|
"IdleTimeout": 180000000000,
|
|
|
|
"InsecureSkipVerify": false,
|
|
|
|
"Retry": null,
|
|
|
|
"HealthCheck": {
|
|
|
|
"Interval": 30000000000
|
|
|
|
},
|
|
|
|
"Docker": null,
|
|
|
|
"File": null,
|
|
|
|
"Web": null,
|
|
|
|
"Marathon": null,
|
|
|
|
"Consul": null,
|
|
|
|
"ConsulCatalog": null,
|
|
|
|
"Etcd": null,
|
|
|
|
"Zookeeper": null,
|
|
|
|
"Boltdb": null,
|
2019-07-08 19:36:03 +00:00
|
|
|
"KubernetesIngress": null,
|
|
|
|
"KubernetesCRD": null,
|
2017-10-02 08:32:02 +00:00
|
|
|
"Mesos": null,
|
|
|
|
"Eureka": null,
|
|
|
|
"ECS": null,
|
|
|
|
"Rancher": null,
|
|
|
|
"DynamoDB": null,
|
|
|
|
"ConfigFile": "/etc/traefik/traefik.toml"
|
|
|
|
}
|
|
|
|
`
|
|
|
|
expectedConfiguration := `
|
|
|
|
{
|
|
|
|
"GraceTimeOut": 10000000000,
|
|
|
|
"Debug": false,
|
|
|
|
"CheckNewVersion": true,
|
|
|
|
"AccessLogsFile": "",
|
|
|
|
"TraefikLogsFile": "",
|
2019-04-16 13:30:09 +00:00
|
|
|
"Level": "ERROR",
|
2017-10-02 08:32:02 +00:00
|
|
|
"EntryPoints": {
|
|
|
|
"http": {
|
|
|
|
"Network": "",
|
|
|
|
"Address": ":80",
|
|
|
|
"TLS": null,
|
|
|
|
"Auth": null,
|
|
|
|
"Compress": false
|
|
|
|
},
|
|
|
|
"https": {
|
|
|
|
"Address": ":443",
|
|
|
|
"TLS": {
|
|
|
|
"MinVersion": "",
|
|
|
|
"CipherSuites": null,
|
|
|
|
"Certificates": null,
|
|
|
|
"ClientCAFiles": null
|
|
|
|
},
|
|
|
|
"Auth": null,
|
|
|
|
"Compress": false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"Cluster": null,
|
|
|
|
"Constraints": [],
|
|
|
|
"ACME": {
|
|
|
|
"Email": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
|
|
"Domains": [
|
|
|
|
{
|
|
|
|
"Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
|
|
"SANs": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"Main": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
|
|
"SANs": null
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Storage": "",
|
|
|
|
"StorageFile": "/acme/acme.json",
|
|
|
|
"OnDemand": true,
|
|
|
|
"OnHostRule": true,
|
|
|
|
"CAServer": "",
|
|
|
|
"EntryPoint": "https",
|
|
|
|
"DNSProvider": "",
|
|
|
|
"DelayDontCheckDNS": 0,
|
|
|
|
"ACMELogging": false,
|
2019-06-17 16:14:08 +00:00
|
|
|
"Options": null
|
2017-10-02 08:32:02 +00:00
|
|
|
},
|
|
|
|
"DefaultEntryPoints": [
|
|
|
|
"https",
|
|
|
|
"http"
|
|
|
|
],
|
|
|
|
"ProvidersThrottleDuration": 2000000000,
|
|
|
|
"MaxIdleConnsPerHost": 200,
|
|
|
|
"IdleTimeout": 180000000000,
|
|
|
|
"InsecureSkipVerify": false,
|
|
|
|
"Retry": null,
|
|
|
|
"HealthCheck": {
|
|
|
|
"Interval": 30000000000
|
|
|
|
},
|
|
|
|
"Docker": null,
|
|
|
|
"File": null,
|
|
|
|
"Web": null,
|
|
|
|
"Marathon": null,
|
|
|
|
"Consul": null,
|
|
|
|
"ConsulCatalog": null,
|
|
|
|
"Etcd": null,
|
|
|
|
"Zookeeper": null,
|
|
|
|
"Boltdb": null,
|
2019-07-08 19:36:03 +00:00
|
|
|
"KubernetesIngress": null,
|
|
|
|
"KubernetesCRD": null,
|
2017-10-02 08:32:02 +00:00
|
|
|
"Mesos": null,
|
|
|
|
"Eureka": null,
|
|
|
|
"ECS": null,
|
|
|
|
"Rancher": null,
|
|
|
|
"DynamoDB": null,
|
|
|
|
"ConfigFile": "/etc/traefik/traefik.toml"
|
|
|
|
}
|
|
|
|
`
|
|
|
|
anomConfiguration := doOnJSON(baseConfiguration)
|
|
|
|
|
|
|
|
if anomConfiguration != expectedConfiguration {
|
|
|
|
t.Errorf("Got %s, want %s.", anomConfiguration, expectedConfiguration)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_doOnJSON_simple(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
name string
|
|
|
|
input string
|
|
|
|
expectedOutput string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "email",
|
|
|
|
input: `{
|
|
|
|
"email1": "goo@example.com",
|
|
|
|
"email2": "foo.bargoo@example.com",
|
|
|
|
"email3": "foo.bargoo@example.com.us"
|
|
|
|
}`,
|
|
|
|
expectedOutput: `{
|
|
|
|
"email1": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
|
|
"email2": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
|
|
"email3": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
|
|
}`,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "url",
|
|
|
|
input: `{
|
|
|
|
"URL": "foo domain.com foo",
|
|
|
|
"URL": "foo sub.domain.com foo",
|
|
|
|
"URL": "foo sub.sub.domain.com foo",
|
|
|
|
"URL": "foo sub.sub.sub.domain.com.us foo"
|
|
|
|
}`,
|
|
|
|
expectedOutput: `{
|
|
|
|
"URL": "foo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx foo",
|
|
|
|
"URL": "foo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx foo",
|
|
|
|
"URL": "foo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx foo",
|
|
|
|
"URL": "foo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx foo"
|
|
|
|
}`,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, test := range testCases {
|
|
|
|
t.Run(test.name, func(t *testing.T) {
|
|
|
|
output := doOnJSON(test.input)
|
|
|
|
assert.Equal(t, test.expectedOutput, output)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|