influxdb/services/httpd/v2_write_test.go

95 lines
2.3 KiB
Go

package httpd
import "testing"
// test of how we extract the database and retention policy from the bucket in
// our v2 api enpoint.
func TestV2DatabaseRetentionPolicyMapper(t *testing.T) {
tests := map[string]struct {
input string
db string
rp string
shoulderr bool
}{
"Properly Encoded": {
input: "database/retention",
db: "database",
rp: "retention",
shoulderr: false,
},
"Empty Database": {
input: "/retention",
db: "",
rp: "",
shoulderr: true,
},
"Empty Retention Policy": {
input: "database/",
db: "database",
rp: "",
shoulderr: false,
},
"No Slash, Empty Retention Policy": {
input: "database",
db: "database",
rp: "",
shoulderr: false,
},
"Empty String": {
input: "",
db: "",
rp: "",
shoulderr: true,
},
"Space Before DB": {
input: " database/retention",
db: " database",
rp: "retention",
shoulderr: false,
},
"Space After DB": {
input: "database /retention",
db: "database ",
rp: "retention",
shoulderr: false,
},
"Space Before RP": {
input: "database/ retention",
db: "database",
rp: " retention",
shoulderr: false,
},
"Space After RP": {
input: "database/retention ",
db: "database",
rp: "retention ",
shoulderr: false,
},
}
t.Parallel()
for name, test := range tests {
test := test
t.Run(name, func(t *testing.T) {
db, rp, err := bucket2dbrp(test.input)
switch goterr, shoulderr := err != nil, test.shoulderr; {
case goterr != shoulderr:
switch shoulderr {
case true:
t.Fatalf("bucket2dbrp(%q) did not return an error; expected to return an error", test.input)
default:
t.Fatalf("bucket2dbrp(%q) return an error %v; expected to return a nil error", test.input, err)
}
}
if got, expected := db, test.db; got != expected {
t.Fatalf("bucket2dbrp(%q) returned a database of %q; epected %q", test.input, got, expected)
}
if got, expected := rp, test.rp; got != expected {
t.Fatalf("bucket2dbrp(%q) returned a retention policy of %q; epected %q", test.input, got, expected)
}
})
}
}