1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
// Copyright 2024 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package validator_test
import (
"errors"
"testing"
"github.com/google/syzkaller/pkg/validator"
"github.com/stretchr/testify/assert"
)
func TestIsCommitHash(t *testing.T) {
assert.True(t, validator.CommitHash("b311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
assert.False(t, validator.CommitHash("").Ok)
assert.False(t, validator.CommitHash("b311").Ok)
assert.False(t, validator.CommitHash("+311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
assert.Equal(t, "not a hash: len is not 40", validator.CommitHash("b311").Err.Error())
assert.Equal(t, "valName: not a hash: len is not 40",
validator.CommitHash("b311", "valName").Err.Error())
assert.Equal(t, "valName: not a hash: not an alphanum",
validator.CommitHash("!311c1b497e51a628aa89e7cb954481e5f9dced2", "valName").Err.Error())
}
// nolint: dupl
func TestIsNamespaceName(t *testing.T) {
assert.True(t, validator.NamespaceName("upstream").Ok)
assert.False(t, validator.NamespaceName("up").Ok)
assert.False(t, validator.NamespaceName("").Ok)
assert.Equal(t, "not a namespace name", validator.NamespaceName("up").Err.Error())
assert.Equal(t, "ns: not a namespace name",
validator.NamespaceName("up", "ns").Err.Error())
}
// nolint: dupl
func TestIsManagerName(t *testing.T) {
assert.True(t, validator.ManagerName("ci-upstream").Ok)
assert.False(t, validator.ManagerName("").Ok)
assert.Equal(t, "not a manager name", validator.ManagerName("*").Err.Error())
assert.Equal(t, "manager: not a manager name",
validator.ManagerName("*", "manager").Err.Error())
}
// nolint: dupl
func TestIsDashboardClientName(t *testing.T) {
assert.True(t, validator.DashClientName("name").Ok)
assert.False(t, validator.DashClientName("").Ok)
assert.Equal(t, "not a dashboard client name", validator.DashClientName("cl").Err.Error())
assert.Equal(t, "client: not a dashboard client name",
validator.DashClientName("cl", "client").Err.Error())
}
// nolint: dupl
func TestIsDashboardClientKey(t *testing.T) {
assert.True(t, validator.DashClientKey("b311c1b497e51a628aa89e7cb954481e5f9dced2").Ok)
assert.False(t, validator.DashClientKey("").Ok)
assert.Equal(t, "not a dashboard client key", validator.DashClientKey("key").Err.Error())
assert.Equal(t, "clientKey: not a dashboard client key",
validator.DashClientKey("clKey", "clientKey").Err.Error())
}
// nolint: dupl
func TestIsKernelFilePath(t *testing.T) {
assert.True(t, validator.KernelFilePath("io_uring/advise.c").Ok)
assert.True(t, validator.KernelFilePath("io-uring/advise.c").Ok)
assert.False(t, validator.KernelFilePath("io--uring/advise.c").Ok)
assert.False(t, validator.KernelFilePath("").Ok)
assert.Equal(t, "not a kernel file path", validator.KernelFilePath("io--uring").Err.Error())
assert.Equal(t, "kernelPath: not a kernel file path",
validator.KernelFilePath("io--uring", "kernelPath").Err.Error())
}
var badResult = validator.Result{false, errors.New("sample error")}
func TestAnyError(t *testing.T) {
assert.Nil(t, validator.AnyError("prefix", validator.ResultOk, validator.ResultOk))
assert.Equal(t, "prefix: sample error",
validator.AnyError("prefix", validator.ResultOk, badResult).Error())
}
func TestPanicIfNot(t *testing.T) {
assert.NotPanics(t, func() { validator.PanicIfNot(validator.ResultOk, validator.ResultOk) })
assert.Panics(t, func() { validator.PanicIfNot(validator.ResultOk, badResult) })
}
func TestAnyOk(t *testing.T) {
assert.Equal(t, validator.ResultOk, validator.AnyOk())
assert.Equal(t, validator.ResultOk, validator.AnyOk(validator.ResultOk))
assert.Equal(t, badResult, validator.AnyOk(badResult))
assert.Equal(t, validator.ResultOk, validator.AnyOk(badResult, validator.ResultOk))
}
func TestAllowlisted(t *testing.T) {
assert.True(t, validator.Allowlisted("good", []string{"good", "also-good"}).Ok)
assert.False(t, validator.Allowlisted("bad", []string{"good", "also-good"}).Ok)
assert.Equal(t,
validator.Result{Ok: false, Err: errors.New("name(bad) is not allowed")},
validator.Allowlisted("bad", nil, "name"))
}
|