Update test utils (#933)

Co-authored-by: Azeem Shaikh <azeems@google.com>
This commit is contained in:
Azeem Shaikh 2021-08-30 14:12:57 -07:00 committed by GitHub
parent dbb23450e5
commit d9f5209803
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 191 additions and 158 deletions

View File

@ -90,7 +90,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "Only development branch", name: "Only development branch",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -138,7 +138,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "Take worst of release and development", name: "Take worst of release and development",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 5, Score: 5,
NumberOfWarn: 8, NumberOfWarn: 8,
NumberOfInfo: 9, NumberOfInfo: 9,
@ -219,7 +219,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "Both release and development are OK", name: "Both release and development are OK",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 9, Score: 9,
NumberOfWarn: 4, NumberOfWarn: 4,
NumberOfInfo: 14, NumberOfInfo: 14,
@ -300,7 +300,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "Ignore a non-branch targetcommitish", name: "Ignore a non-branch targetcommitish",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -348,7 +348,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "TargetCommittish nil", name: "TargetCommittish nil",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: []error{sce.ErrScorecardInternal}, Error: sce.ErrScorecardInternal,
Score: checker.InconclusiveResultScore, Score: checker.InconclusiveResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -396,7 +396,7 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
{ {
name: "Non-admin check with protected release and development", name: "Non-admin check with protected release and development",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 2, NumberOfWarn: 2,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -442,7 +442,9 @@ func TestReleaseAndDevBranchProtected(t *testing.T) {
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
r := checkReleaseAndDevBranchProtection(context.Background(), mockRepoClient, m, r := checkReleaseAndDevBranchProtection(context.Background(), mockRepoClient, m,
&dl, "testowner", "testrepo") &dl, "testowner", "testrepo")
scut.ValidateTestReturn(t, tt.name, &tt.expected, &r, &dl) if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &r, &dl) {
t.Fail()
}
ctrl.Finish() ctrl.Finish()
}) })
} }
@ -459,7 +461,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Nothing is enabled", name: "Nothing is enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -502,7 +504,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Nothing is enabled and values in github.Protection are nil", name: "Nothing is enabled and values in github.Protection are nil",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 4, NumberOfWarn: 4,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -513,7 +515,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Required status check enabled", name: "Required status check enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 2, Score: 2,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -556,7 +558,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Required status check enabled without checking for status string", name: "Required status check enabled without checking for status string",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 2, Score: 2,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -599,7 +601,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Required pull request enabled", name: "Required pull request enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 2, Score: 2,
NumberOfWarn: 5, NumberOfWarn: 5,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -642,7 +644,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Required admin enforcement enabled", name: "Required admin enforcement enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 3, Score: 3,
NumberOfWarn: 5, NumberOfWarn: 5,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -685,7 +687,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Required linear history enabled", name: "Required linear history enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 2, Score: 2,
NumberOfWarn: 5, NumberOfWarn: 5,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -728,7 +730,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Allow force push enabled", name: "Allow force push enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 0, Score: 0,
NumberOfWarn: 7, NumberOfWarn: 7,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -771,7 +773,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Allow deletions enabled", name: "Allow deletions enabled",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 0, Score: 0,
NumberOfWarn: 7, NumberOfWarn: 7,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -814,7 +816,7 @@ func TestIsBranchProtected(t *testing.T) {
{ {
name: "Branches are protected", name: "Branches are protected",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: 9, Score: 9,
NumberOfWarn: 2, NumberOfWarn: 2,
NumberOfInfo: 7, NumberOfInfo: 7,
@ -860,8 +862,12 @@ func TestIsBranchProtected(t *testing.T) {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
t.Parallel() t.Parallel()
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
score := IsBranchProtected(tt.protection, "test", &dl) actual := &checker.CheckResult{
scut.ValidateTestValues(t, tt.name, &tt.expected, score, nil, &dl) Score: IsBranchProtected(tt.protection, "test", &dl),
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, actual, &dl) {
t.Fail()
}
}) })
} }
} }

View File

@ -36,7 +36,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run workflow codeql write test", name: "run workflow codeql write test",
filename: "./testdata/github-workflow-permissions-run-codeql-write.yaml", filename: "./testdata/github-workflow-permissions-run-codeql-write.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -47,7 +47,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run workflow no codeql write test", name: "run workflow no codeql write test",
filename: "./testdata/github-workflow-permissions-run-no-codeql-write.yaml", filename: "./testdata/github-workflow-permissions-run-no-codeql-write.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore - 1, Score: checker.MaxResultScore - 1,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -58,7 +58,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run workflow write test", name: "run workflow write test",
filename: "./testdata/github-workflow-permissions-run-writes-2.yaml", filename: "./testdata/github-workflow-permissions-run-writes-2.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 3, NumberOfWarn: 3,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -69,7 +69,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run package workflow write test", name: "run package workflow write test",
filename: "./testdata/github-workflow-permissions-run-package-workflow-write.yaml", filename: "./testdata/github-workflow-permissions-run-package-workflow-write.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -80,7 +80,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run package write test", name: "run package write test",
filename: "./testdata/github-workflow-permissions-run-package-write.yaml", filename: "./testdata/github-workflow-permissions-run-package-write.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -91,7 +91,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "run writes test", name: "run writes test",
filename: "./testdata/github-workflow-permissions-run-writes.yaml", filename: "./testdata/github-workflow-permissions-run-writes.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -102,7 +102,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "write all test", name: "write all test",
filename: "./testdata/github-workflow-permissions-writeall.yaml", filename: "./testdata/github-workflow-permissions-writeall.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -113,7 +113,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "read all test", name: "read all test",
filename: "./testdata/github-workflow-permissions-readall.yaml", filename: "./testdata/github-workflow-permissions-readall.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -124,7 +124,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "no permission test", name: "no permission test",
filename: "./testdata/github-workflow-permissions-absent.yaml", filename: "./testdata/github-workflow-permissions-absent.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -135,7 +135,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "writes test", name: "writes test",
filename: "./testdata/github-workflow-permissions-writes.yaml", filename: "./testdata/github-workflow-permissions-writes.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -146,7 +146,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "reads test", name: "reads test",
filename: "./testdata/github-workflow-permissions-reads.yaml", filename: "./testdata/github-workflow-permissions-reads.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 10, NumberOfInfo: 10,
@ -157,7 +157,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "nones test", name: "nones test",
filename: "./testdata/github-workflow-permissions-nones.yaml", filename: "./testdata/github-workflow-permissions-nones.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 10, NumberOfInfo: 10,
@ -168,7 +168,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "none test", name: "none test",
filename: "./testdata/github-workflow-permissions-none.yaml", filename: "./testdata/github-workflow-permissions-none.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -179,7 +179,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "status/checks write", name: "status/checks write",
filename: "./testdata/github-workflow-permissions-status-checks.yaml", filename: "./testdata/github-workflow-permissions-status-checks.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore - 1, Score: checker.MaxResultScore - 1,
NumberOfWarn: 2, NumberOfWarn: 2,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -190,7 +190,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "sec-events/deployments write", name: "sec-events/deployments write",
filename: "./testdata/github-workflow-permissions-secevent-deployments.yaml", filename: "./testdata/github-workflow-permissions-secevent-deployments.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore - 2, Score: checker.MaxResultScore - 2,
NumberOfWarn: 2, NumberOfWarn: 2,
NumberOfInfo: 3, NumberOfInfo: 3,
@ -201,7 +201,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "contents write", name: "contents write",
filename: "./testdata/github-workflow-permissions-contents.yaml", filename: "./testdata/github-workflow-permissions-contents.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -212,7 +212,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "actions write", name: "actions write",
filename: "./testdata/github-workflow-permissions-actions.yaml", filename: "./testdata/github-workflow-permissions-actions.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 2, NumberOfInfo: 2,
@ -223,7 +223,7 @@ func TestGithubTokenPermissions(t *testing.T) {
name: "packages write", name: "packages write",
filename: "./testdata/github-workflow-permissions-packages.yaml", filename: "./testdata/github-workflow-permissions-packages.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 1, NumberOfInfo: 1,

View File

@ -36,7 +36,7 @@ func TestGithubWorkflowPinning(t *testing.T) {
name: "empty file", name: "empty file",
filename: "./testdata/github-workflow-empty", filename: "./testdata/github-workflow-empty",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -47,7 +47,7 @@ func TestGithubWorkflowPinning(t *testing.T) {
name: "comments only", name: "comments only",
filename: "./testdata/github-workflow-comments", filename: "./testdata/github-workflow-comments",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -58,7 +58,7 @@ func TestGithubWorkflowPinning(t *testing.T) {
name: "Pinned workflow", name: "Pinned workflow",
filename: "./testdata/workflow-pinned.yaml", filename: "./testdata/workflow-pinned.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -69,7 +69,7 @@ func TestGithubWorkflowPinning(t *testing.T) {
name: "Non-pinned workflow", name: "Non-pinned workflow",
filename: "./testdata/workflow-not-pinned.yaml", filename: "./testdata/workflow-not-pinned.yaml",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -93,7 +93,13 @@ func TestGithubWorkflowPinning(t *testing.T) {
} }
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
s, e := testIsGitHubActionsWorkflowPinned(tt.filename, content, &dl) s, e := testIsGitHubActionsWorkflowPinned(tt.filename, content, &dl)
scut.ValidateTestValues(t, tt.name, &tt.expected, s, e, &dl) actual := checker.CheckResult{
Score: s,
Error2: e,
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &actual, &dl) {
t.Fail()
}
}) })
} }
} }
@ -109,7 +115,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "invalid dockerfile", name: "invalid dockerfile",
filename: "./testdata/Dockerfile-invalid", filename: "./testdata/Dockerfile-invalid",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -120,7 +126,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "invalid dockerfile sh", name: "invalid dockerfile sh",
filename: "./testdata/script-sh", filename: "./testdata/script-sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -131,7 +137,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "empty file", name: "empty file",
filename: "./testdata/Dockerfile-empty", filename: "./testdata/Dockerfile-empty",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -142,7 +148,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "comments only", name: "comments only",
filename: "./testdata/Dockerfile-comments", filename: "./testdata/Dockerfile-comments",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -153,7 +159,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "Pinned dockerfile", name: "Pinned dockerfile",
filename: "./testdata/Dockerfile-pinned", filename: "./testdata/Dockerfile-pinned",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -164,7 +170,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "Pinned dockerfile as", name: "Pinned dockerfile as",
filename: "./testdata/Dockerfile-pinned-as", filename: "./testdata/Dockerfile-pinned-as",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -175,7 +181,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "Non-pinned dockerfile as", name: "Non-pinned dockerfile as",
filename: "./testdata/Dockerfile-not-pinned-as", filename: "./testdata/Dockerfile-not-pinned-as",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 3, // TODO: should be 2, https://github.com/ossf/scorecard/issues/701. NumberOfWarn: 3, // TODO: should be 2, https://github.com/ossf/scorecard/issues/701.
NumberOfInfo: 0, NumberOfInfo: 0,
@ -186,7 +192,7 @@ func TestDockerfilePinning(t *testing.T) {
name: "Non-pinned dockerfile", name: "Non-pinned dockerfile",
filename: "./testdata/Dockerfile-not-pinned", filename: "./testdata/Dockerfile-not-pinned",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -210,7 +216,13 @@ func TestDockerfilePinning(t *testing.T) {
} }
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
s, e := testValidateDockerfileIsPinned(tt.filename, content, &dl) s, e := testValidateDockerfileIsPinned(tt.filename, content, &dl)
scut.ValidateTestValues(t, tt.name, &tt.expected, s, e, &dl) actual := checker.CheckResult{
Score: s,
Error2: e,
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &actual, &dl) {
t.Fail()
}
}) })
} }
} }
@ -226,7 +238,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "curl | sh", name: "curl | sh",
filename: "testdata/Dockerfile-curl-sh", filename: "testdata/Dockerfile-curl-sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 4, NumberOfWarn: 4,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -237,7 +249,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "empty file", name: "empty file",
filename: "./testdata/Dockerfile-empty", filename: "./testdata/Dockerfile-empty",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -248,7 +260,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "invalid file sh", name: "invalid file sh",
filename: "./testdata/script.sh", filename: "./testdata/script.sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -259,7 +271,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "comments only", name: "comments only",
filename: "./testdata/Dockerfile-comments", filename: "./testdata/Dockerfile-comments",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -270,7 +282,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "wget | /bin/sh", name: "wget | /bin/sh",
filename: "testdata/Dockerfile-wget-bin-sh", filename: "testdata/Dockerfile-wget-bin-sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 3, NumberOfWarn: 3,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -281,7 +293,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "wget no exec", name: "wget no exec",
filename: "testdata/Dockerfile-script-ok", filename: "testdata/Dockerfile-script-ok",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -292,7 +304,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "curl file sh", name: "curl file sh",
filename: "testdata/Dockerfile-curl-file-sh", filename: "testdata/Dockerfile-curl-file-sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 12, NumberOfWarn: 12,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -303,7 +315,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "proc substitution", name: "proc substitution",
filename: "testdata/Dockerfile-proc-subs", filename: "testdata/Dockerfile-proc-subs",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 6, NumberOfWarn: 6,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -314,7 +326,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "wget file", name: "wget file",
filename: "testdata/Dockerfile-wget-file", filename: "testdata/Dockerfile-wget-file",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 10, NumberOfWarn: 10,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -325,7 +337,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "gsutil file", name: "gsutil file",
filename: "testdata/Dockerfile-gsutil-file", filename: "testdata/Dockerfile-gsutil-file",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 17, NumberOfWarn: 17,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -336,7 +348,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "aws file", name: "aws file",
filename: "testdata/Dockerfile-aws-file", filename: "testdata/Dockerfile-aws-file",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 15, NumberOfWarn: 15,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -347,7 +359,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "pkg managers", name: "pkg managers",
filename: "testdata/Dockerfile-pkg-managers", filename: "testdata/Dockerfile-pkg-managers",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 27, NumberOfWarn: 27,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -358,7 +370,7 @@ func TestDockerfileScriptDownload(t *testing.T) {
name: "download with some python", name: "download with some python",
filename: "testdata/Dockerfile-some-python", filename: "testdata/Dockerfile-some-python",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -382,7 +394,13 @@ func TestDockerfileScriptDownload(t *testing.T) {
} }
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
s, e := testValidateDockerfileIsFreeOfInsecureDownloads(tt.filename, content, &dl) s, e := testValidateDockerfileIsFreeOfInsecureDownloads(tt.filename, content, &dl)
scut.ValidateTestValues(t, tt.name, &tt.expected, s, e, &dl) actual := checker.CheckResult{
Score: s,
Error2: e,
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &actual, &dl) {
t.Fail()
}
}) })
} }
} }
@ -398,7 +416,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "sh script", name: "sh script",
filename: "testdata/script-sh", filename: "testdata/script-sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 7, NumberOfWarn: 7,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -409,7 +427,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "empty file", name: "empty file",
filename: "./testdata/script-empty.sh", filename: "./testdata/script-empty.sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -420,7 +438,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "comments", name: "comments",
filename: "./testdata/script-comments.sh", filename: "./testdata/script-comments.sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -431,7 +449,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "bash script", name: "bash script",
filename: "testdata/script-bash", filename: "testdata/script-bash",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 7, NumberOfWarn: 7,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -442,7 +460,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "sh script 2", name: "sh script 2",
filename: "testdata/script.sh", filename: "testdata/script.sh",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 7, NumberOfWarn: 7,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -453,7 +471,7 @@ func TestShellScriptDownload(t *testing.T) {
name: "pkg managers", name: "pkg managers",
filename: "testdata/script-pkg-managers", filename: "testdata/script-pkg-managers",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 24, NumberOfWarn: 24,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -477,7 +495,13 @@ func TestShellScriptDownload(t *testing.T) {
} }
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
s, e := testValidateShellScriptIsFreeOfInsecureDownloads(tt.filename, content, &dl) s, e := testValidateShellScriptIsFreeOfInsecureDownloads(tt.filename, content, &dl)
scut.ValidateTestValues(t, tt.name, &tt.expected, s, e, &dl) actual := checker.CheckResult{
Score: s,
Error2: e,
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &actual, &dl) {
t.Fail()
}
}) })
} }
} }
@ -493,7 +517,7 @@ func TestGitHubWorflowRunDownload(t *testing.T) {
name: "workflow curl default", name: "workflow curl default",
filename: "testdata/github-workflow-curl-default", filename: "testdata/github-workflow-curl-default",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -504,7 +528,7 @@ func TestGitHubWorflowRunDownload(t *testing.T) {
name: "workflow curl no default", name: "workflow curl no default",
filename: "testdata/github-workflow-curl-no-default", filename: "testdata/github-workflow-curl-no-default",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -515,7 +539,7 @@ func TestGitHubWorflowRunDownload(t *testing.T) {
name: "wget across steps", name: "wget across steps",
filename: "testdata/github-workflow-wget-across-steps", filename: "testdata/github-workflow-wget-across-steps",
expected: scut.TestReturn{ expected: scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 2, NumberOfWarn: 2,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -539,7 +563,13 @@ func TestGitHubWorflowRunDownload(t *testing.T) {
} }
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
s, e := testValidateGitHubWorkflowScriptFreeOfInsecureDownloads(tt.filename, content, &dl) s, e := testValidateGitHubWorkflowScriptFreeOfInsecureDownloads(tt.filename, content, &dl)
scut.ValidateTestValues(t, tt.name, &tt.expected, s, e, &dl) actual := checker.CheckResult{
Score: s,
Error2: e,
}
if !scut.ValidateTestReturn(t, tt.name, &tt.expected, &actual, &dl) {
t.Fail()
}
}) })
} }
} }

View File

@ -47,7 +47,7 @@ var _ = Describe("E2E TEST:"+checks.CheckBinaryArtifacts, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -79,7 +79,7 @@ var _ = Describe("E2E TEST:"+checks.CheckBinaryArtifacts, func() {
} }
// TODO: upload real binaries to the repo as well. // TODO: upload real binaries to the repo as well.
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 35, NumberOfWarn: 35,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// nolint: dupl
package e2e package e2e
import ( import (
@ -22,6 +23,7 @@ import (
"github.com/ossf/scorecard/v2/checker" "github.com/ossf/scorecard/v2/checker"
"github.com/ossf/scorecard/v2/checks" "github.com/ossf/scorecard/v2/checks"
"github.com/ossf/scorecard/v2/clients/githubrepo"
scut "github.com/ossf/scorecard/v2/utests" scut "github.com/ossf/scorecard/v2/utests"
) )
@ -29,18 +31,21 @@ var _ = Describe("E2E TEST:"+checks.CheckBranchProtection, func() {
Context("E2E TEST:Validating branch protection", func() { Context("E2E TEST:Validating branch protection", func() {
It("Should fail to return branch protection on other repositories", func() { It("Should fail to return branch protection on other repositories", func() {
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
repoClient := githubrepo.CreateGithubRepoClient(context.Background(), ghClient, graphClient)
err := repoClient.InitRepo("apache", "airflow")
Expect(err).Should(BeNil())
req := checker.CheckRequest{ req := checker.CheckRequest{
Ctx: context.Background(), Ctx: context.Background(),
Client: ghClient, Client: ghClient,
HTTPClient: httpClient, HTTPClient: httpClient,
RepoClient: nil, RepoClient: repoClient,
Owner: "apache", Owner: "apache",
Repo: "airflow", Repo: "airflow",
GraphClient: graphClient, GraphClient: graphClient,
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: 1, Score: 1,
NumberOfWarn: 3, NumberOfWarn: 3,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -57,18 +62,21 @@ var _ = Describe("E2E TEST:"+checks.CheckBranchProtection, func() {
Context("E2E TEST:Validating branch protection", func() { Context("E2E TEST:Validating branch protection", func() {
It("Should fail to return branch protection on other repositories", func() { It("Should fail to return branch protection on other repositories", func() {
dl := scut.TestDetailLogger{} dl := scut.TestDetailLogger{}
repoClient := githubrepo.CreateGithubRepoClient(context.Background(), ghClient, graphClient)
err := repoClient.InitRepo("ossf-tests", "scorecard-check-branch-protection-e2e")
Expect(err).Should(BeNil())
req := checker.CheckRequest{ req := checker.CheckRequest{
Ctx: context.Background(), Ctx: context.Background(),
Client: ghClient, Client: ghClient,
HTTPClient: httpClient, HTTPClient: httpClient,
RepoClient: nil, RepoClient: repoClient,
Owner: "ossf-tests", Owner: "ossf-tests",
Repo: "scorecard-check-branch-protection-e2e", Repo: "scorecard-check-branch-protection-e2e",
GraphClient: graphClient, GraphClient: graphClient,
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: 9, Score: 9,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 8, NumberOfInfo: 8,

View File

@ -45,11 +45,11 @@ var _ = Describe("E2E TEST:"+checks.CheckCITests, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,
NumberOfDebug: 24, NumberOfDebug: 30,
} }
result := checks.CITests(&req) result := checks.CITests(&req)
// UPGRADEv2: to remove. // UPGRADEv2: to remove.

View File

@ -40,7 +40,7 @@ var _ = Describe("E2E TEST:CIIBestPractices", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: 5, Score: 5,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -48,7 +48,7 @@ var _ = Describe("E2E TEST:CodeReview", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 2, NumberOfInfo: 2,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckContributors, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -75,7 +75,7 @@ var _ = Describe("E2E TEST:"+checks.CheckContributors, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,

View File

@ -47,7 +47,7 @@ var _ = Describe("E2E TEST:"+checks.CheckDependencyUpdateTool, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -78,7 +78,7 @@ var _ = Describe("E2E TEST:"+checks.CheckDependencyUpdateTool, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckFuzzing, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckMaintained, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckPackaging, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 2, NumberOfInfo: 2,

View File

@ -44,7 +44,7 @@ var _ = Describe("E2E TEST:"+checks.CheckTokenPermissions, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 2, NumberOfInfo: 2,

View File

@ -47,7 +47,7 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 154, NumberOfWarn: 154,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// nolint: dupl
package e2e package e2e
import ( import (
@ -44,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckSAST, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: 7, Score: 7,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 1, NumberOfInfo: 1,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:SecurityPolicy", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,
@ -76,7 +76,7 @@ var _ = Describe("E2E TEST:SecurityPolicy", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 1, NumberOfInfo: 1,

View File

@ -45,7 +45,7 @@ var _ = Describe("E2E TEST:"+checks.CheckSignedReleases, func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 5, NumberOfInfo: 5,

View File

@ -46,7 +46,7 @@ var _ = Describe("E2E TEST:Vulnerabilities", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MaxResultScore, Score: checker.MaxResultScore,
NumberOfWarn: 0, NumberOfWarn: 0,
NumberOfInfo: 0, NumberOfInfo: 0,
@ -78,7 +78,7 @@ var _ = Describe("E2E TEST:Vulnerabilities", func() {
Dlogger: &dl, Dlogger: &dl,
} }
expected := scut.TestReturn{ expected := scut.TestReturn{
Errors: nil, Error: nil,
Score: checker.MinResultScore, Score: checker.MinResultScore,
NumberOfWarn: 1, NumberOfWarn: 1,
NumberOfInfo: 0, NumberOfInfo: 0,

View File

@ -18,30 +18,21 @@ package utests
import ( import (
"errors" "errors"
"fmt" "fmt"
"log"
"testing" "testing"
"github.com/google/go-cmp/cmp"
"github.com/ossf/scorecard/v2/checker" "github.com/ossf/scorecard/v2/checker"
) )
func validateDetailTypes(messages []checker.CheckDetail, nw, ni, nd int) bool { // TestReturn encapsulates expected CheckResult return values.
enw := 0 type TestReturn struct {
eni := 0 Error error
end := 0 Score int
for _, v := range messages { NumberOfWarn int
switch v.Type { NumberOfInfo int
default: NumberOfDebug int
panic(fmt.Sprintf("invalid type %v", v.Type))
case checker.DetailInfo:
eni++
case checker.DetailDebug:
end++
case checker.DetailWarn:
enw++
}
}
return enw == nw &&
eni == ni &&
end == nd
} }
// TestDetailLogger implements `checker.DetailLogger`. // TestDetailLogger implements `checker.DetailLogger`.
@ -49,15 +40,6 @@ type TestDetailLogger struct {
messages []checker.CheckDetail messages []checker.CheckDetail
} }
// TestReturn encapsulates expected CheckResult return values.
type TestReturn struct {
Errors []error
Score int
NumberOfWarn int
NumberOfInfo int
NumberOfDebug int
}
// Info implements DetailLogger.Info. // Info implements DetailLogger.Info.
func (l *TestDetailLogger) Info(desc string, args ...interface{}) { func (l *TestDetailLogger) Info(desc string, args ...interface{}) {
cd := checker.CheckDetail{Type: checker.DetailInfo, Msg: checker.LogMessage{Text: fmt.Sprintf(desc, args...)}} cd := checker.CheckDetail{Type: checker.DetailInfo, Msg: checker.LogMessage{Text: fmt.Sprintf(desc, args...)}}
@ -77,7 +59,8 @@ func (l *TestDetailLogger) Debug(desc string, args ...interface{}) {
} }
// UPGRADEv3: to rename. // UPGRADEv3: to rename.
//nolint:revive
// Info3 implements DetailLogger.Info3.
func (l *TestDetailLogger) Info3(msg *checker.LogMessage) { func (l *TestDetailLogger) Info3(msg *checker.LogMessage) {
cd := checker.CheckDetail{ cd := checker.CheckDetail{
Type: checker.DetailInfo, Type: checker.DetailInfo,
@ -87,7 +70,7 @@ func (l *TestDetailLogger) Info3(msg *checker.LogMessage) {
l.messages = append(l.messages, cd) l.messages = append(l.messages, cd)
} }
//nolint:revive // Warn3 implements DetailLogger.Warn3.
func (l *TestDetailLogger) Warn3(msg *checker.LogMessage) { func (l *TestDetailLogger) Warn3(msg *checker.LogMessage) {
cd := checker.CheckDetail{ cd := checker.CheckDetail{
Type: checker.DetailWarn, Type: checker.DetailWarn,
@ -97,7 +80,7 @@ func (l *TestDetailLogger) Warn3(msg *checker.LogMessage) {
l.messages = append(l.messages, cd) l.messages = append(l.messages, cd)
} }
//nolint:revive // Debug3 implements DetailLogger.Debug3.
func (l *TestDetailLogger) Debug3(msg *checker.LogMessage) { func (l *TestDetailLogger) Debug3(msg *checker.LogMessage) {
cd := checker.CheckDetail{ cd := checker.CheckDetail{
Type: checker.DetailDebug, Type: checker.DetailDebug,
@ -107,38 +90,43 @@ func (l *TestDetailLogger) Debug3(msg *checker.LogMessage) {
l.messages = append(l.messages, cd) l.messages = append(l.messages, cd)
} }
// ValidateTestValues validates returned score and log values. func getTestReturn(cr *checker.CheckResult, logger *TestDetailLogger) (*TestReturn, error) {
// nolint: thelper ret := new(TestReturn)
func ValidateTestValues(t *testing.T, name string, te *TestReturn, for _, v := range logger.messages {
score int, err error, dl *TestDetailLogger) bool { switch v.Type {
for _, we := range te.Errors { default:
if !errors.Is(err, we) { // nolint: goerr113
if t != nil { return nil, fmt.Errorf("invalid type %v", v.Type)
t.Errorf("%v: invalid error returned: %v is not of type %v", case checker.DetailInfo:
name, err, we) ret.NumberOfInfo++
} case checker.DetailDebug:
fmt.Printf("%v: invalid error returned: %v is not of type %v", ret.NumberOfDebug++
name, err, we) case checker.DetailWarn:
return false ret.NumberOfWarn++
} }
} }
if score != te.Score || ret.Score = cr.Score
!validateDetailTypes(dl.messages, te.NumberOfWarn, ret.Error = cr.Error
te.NumberOfInfo, te.NumberOfDebug) { return ret, nil
if t != nil { }
t.Errorf("%v: Got (score=%v) expected (%v)\n%v",
name, score, te.Score, dl.messages) func errCmp(e1, e2 error) bool {
} return errors.Is(e1, e2) || errors.Is(e2, e1)
return false
}
return true
} }
// ValidateTestReturn validates expected TestReturn with actual checker.CheckResult values. // ValidateTestReturn validates expected TestReturn with actual checker.CheckResult values.
// nolint: thelper // nolint: thelper
func ValidateTestReturn(t *testing.T, name string, te *TestReturn, func ValidateTestReturn(t *testing.T, name string, expected *TestReturn,
tr *checker.CheckResult, dl *TestDetailLogger) bool { actual *checker.CheckResult, logger *TestDetailLogger) bool {
return ValidateTestValues(t, name, te, tr.Score, tr.Error2, dl) actualTestReturn, err := getTestReturn(actual, logger)
if err != nil {
panic(err)
}
if !cmp.Equal(*actualTestReturn, *expected, cmp.Comparer(errCmp)) {
log.Println(cmp.Diff(*actualTestReturn, *expected))
return false
}
return true
} }
// ValidateLogMessage tests that at least one log message returns true for isExpectedMessage. // ValidateLogMessage tests that at least one log message returns true for isExpectedMessage.