API url regexps (#400)
* Make url regexp more flexible, to accept identifier with dashes * Add few simple tests * Check also numerics
This commit is contained in:
parent
1b4181a724
commit
78e83308fc
|
|
@ -48,11 +48,22 @@ type Server struct {
|
||||||
controller controllerInformer
|
controller controllerInformer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
teamRe = `(?P<team>[a-zA-Z][a-zA-Z0-9\-_]*)`
|
||||||
|
namespaceRe = `(?P<namespace>[a-z0-9]([-a-z0-9\-_]*[a-z0-9])?)`
|
||||||
|
clusterRe = `(?P<cluster>[a-zA-Z][a-zA-Z0-9\-_]*)`
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
clusterStatusURL = regexp.MustCompile(`^/clusters/(?P<team>[a-zA-Z][a-zA-Z0-9]*)/(?P<namespace>[a-z0-9]([-a-z0-9]*[a-z0-9])?)/(?P<cluster>[a-zA-Z][a-zA-Z0-9-]*)/?$`)
|
clusterStatusRe = fmt.Sprintf(`^/clusters/%s/%s/%s/?$`, teamRe, namespaceRe, clusterRe)
|
||||||
clusterLogsURL = regexp.MustCompile(`^/clusters/(?P<team>[a-zA-Z][a-zA-Z0-9]*)/(?P<namespace>[a-z0-9]([-a-z0-9]*[a-z0-9])?)/(?P<cluster>[a-zA-Z][a-zA-Z0-9-]*)/logs/?$`)
|
clusterLogsRe = fmt.Sprintf(`^/clusters/%s/%s/%s/logs/?$`, teamRe, namespaceRe, clusterRe)
|
||||||
clusterHistoryURL = regexp.MustCompile(`^/clusters/(?P<team>[a-zA-Z][a-zA-Z0-9]*)/(?P<namespace>[a-z0-9]([-a-z0-9]*[a-z0-9])?)/(?P<cluster>[a-zA-Z][a-zA-Z0-9-]*)/history/?$`)
|
clusterHistoryRe = fmt.Sprintf(`^/clusters/%s/%s/%s/history/?$`, teamRe, namespaceRe, clusterRe)
|
||||||
teamURL = regexp.MustCompile(`^/clusters/(?P<team>[a-zA-Z][a-zA-Z0-9]*)/?$`)
|
teamURLRe = fmt.Sprintf(`^/clusters/%s/?$`, teamRe)
|
||||||
|
|
||||||
|
clusterStatusURL = regexp.MustCompile(clusterStatusRe)
|
||||||
|
clusterLogsURL = regexp.MustCompile(clusterLogsRe)
|
||||||
|
clusterHistoryURL = regexp.MustCompile(clusterHistoryRe)
|
||||||
|
teamURL = regexp.MustCompile(teamURLRe)
|
||||||
workerLogsURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/logs/?$`)
|
workerLogsURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/logs/?$`)
|
||||||
workerEventsQueueURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/queue/?$`)
|
workerEventsQueueURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/queue/?$`)
|
||||||
workerStatusURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/status/?$`)
|
workerStatusURL = regexp.MustCompile(`^/workers/(?P<id>\d+)/status/?$`)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package apiserver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
clusterStatusTest = "/clusters/test-id/test_namespace/testcluster/"
|
||||||
|
clusterStatusNumericTest = "/clusters/test-id-1/test_namespace/testcluster/"
|
||||||
|
clusterLogsTest = "/clusters/test-id/test_namespace/testcluster/logs/"
|
||||||
|
teamTest = "/clusters/test-id/"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestUrlRegexps(t *testing.T) {
|
||||||
|
if clusterStatusURL.FindStringSubmatch(clusterStatusTest) == nil {
|
||||||
|
t.Errorf("clusterStatusURL can't match %s", clusterStatusTest)
|
||||||
|
}
|
||||||
|
|
||||||
|
if clusterStatusURL.FindStringSubmatch(clusterStatusNumericTest) == nil {
|
||||||
|
t.Errorf("clusterStatusURL can't match %s", clusterStatusNumericTest)
|
||||||
|
}
|
||||||
|
|
||||||
|
if clusterLogsURL.FindStringSubmatch(clusterLogsTest) == nil {
|
||||||
|
t.Errorf("clusterLogsURL can't match %s", clusterLogsTest)
|
||||||
|
}
|
||||||
|
|
||||||
|
if teamURL.FindStringSubmatch(teamTest) == nil {
|
||||||
|
t.Errorf("teamURL can't match %s", teamTest)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue