Skip to content

Commit

Permalink
Use require.NoError instead of assert.NoError
Browse files Browse the repository at this point in the history
require.NoError will stop a test if the variable passed to it contains
an error whereas assert.NoError will just report the existence of an
error.

Signed-off-by: Pavlos Tzianos <[email protected]>
  • Loading branch information
ptzianos committed Jan 22, 2024
1 parent f3300f7 commit c93dab3
Show file tree
Hide file tree
Showing 36 changed files with 208 additions and 178 deletions.
21 changes: 11 additions & 10 deletions components/consumers/defectdojo/client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/ocurity/dracon/components/consumers/defectdojo/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestDojoClient(t *testing.T) {
Expand All @@ -17,13 +18,13 @@ func TestDojoClient(t *testing.T) {
assert.Equal(t, r.RequestURI, "/users")
called = true
_, err := w.Write([]byte(`{"count":1,"next":null,"previous":null,"results":[{"id":1,"username":"admin","first_name":"Admin","last_name":"User","email":"[email protected]","last_login":"2022-05-31T20:26:54.928778Z","is_active":true,"is_superuser":true}]}`))
assert.NoError(t, err)
require.NoError(t, err)
}))
authToken := "foo"
authUser := "bar"
client, err := DojoClient(mockTs.URL, authToken, authUser)
c := &Client{host: mockTs.URL, apiToken: authToken, user: authUser}
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, called)
assert.Equal(t, client, c)
}
Expand All @@ -37,7 +38,7 @@ func TestCreateFinding(t *testing.T) {
assert.Equal(t, r.RequestURI, "/findings")

b, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var actual, exp types.FindingCreateRequest
exp = types.FindingCreateRequest{
Expand All @@ -56,11 +57,11 @@ func TestCreateFinding(t *testing.T) {
Tags: []string{"tests"},
Date: "2006-01-02",
}
assert.NoError(t, json.Unmarshal(b, &actual))
require.NoError(t, json.Unmarshal(b, &actual))
assert.Equal(t, actual, exp)

_, err = w.Write([]byte(expected))
assert.NoError(t, err)
require.NoError(t, err)
}))

c := &Client{host: mockTs.URL, apiToken: "test", user: ""}
Expand All @@ -74,7 +75,7 @@ func TestCreateFinding(t *testing.T) {
1,
1,
0, 0, false, false, false, 3.9)
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, called)
}

Expand All @@ -86,10 +87,10 @@ func TestCreateEngagement(t *testing.T) {
assert.Equal(t, r.RequestURI, "/engagements")

b, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var engagement types.EngagementRequest
assert.NoError(t, json.Unmarshal(b, &engagement))
require.NoError(t, json.Unmarshal(b, &engagement))

expectedEngagement := types.EngagementRequest{
Tags: []string{"foo.git/somesha"},
Expand All @@ -102,11 +103,11 @@ func TestCreateEngagement(t *testing.T) {
assert.Equal(t, expectedEngagement, engagement)

_, err = w.Write([]byte(`{"id":4,"tags":["foo.git/somesha"],"name":"dracon scan foo","description":null,"version":"string","first_contacted":null,"target_start":"2022-06-01","target_end":"2022-06-01","reason":null,"updated":"2022-06-01T16:29:18.965507Z","created":"2022-06-01T16:29:18.908694Z","active":true,"tracker":null,"test_strategy":null,"threat_model":true,"api_test":true,"pen_test":true,"check_list":true,"status":"","progress":"threat_model","tmodel_path":"none","done_testing":false,"engagement_type":"Interactive","build_id":"foo","commit_hash":null,"branch_tag":null,"source_code_management_uri":null,"deduplication_on_engagement":false,"lead":null,"requester":null,"preset":null,"report_type":null,"product":2,"build_server":null,"source_code_management_server":null,"orchestration_engine":null,"notes":[],"files":[],"risk_acceptance":[]}`))
assert.NoError(t, err)
require.NoError(t, err)
}))

c := &Client{host: mockTs.URL, apiToken: "test", user: ""}
_, err := c.CreateEngagement("dracon scan foo", "2022-06-01", []string{"foo.git/somesha"}, 2)
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, called)
}
41 changes: 21 additions & 20 deletions components/consumers/defectdojo/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/ocurity/dracon/components/consumers/defectdojo/types"
"github.com/ocurity/dracon/pkg/templating"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/types/known/timestamppb"
)

Expand Down Expand Up @@ -154,7 +155,7 @@ func TestHandleRawResults(t *testing.T) {

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

switch string(r.URL.Path) {
case "/users":
Expand All @@ -175,41 +176,41 @@ func TestHandleRawResults(t *testing.T) {
},
},
}
assert.NoError(t, json.NewEncoder(w).Encode(result))
require.NoError(t, json.NewEncoder(w).Encode(result))

case "/tests":
testRequest := &types.TestCreateRequest{}
assert.NoError(t, json.Unmarshal(body, testRequest))
require.NoError(t, json.Unmarshal(body, testRequest))
assert.Contains(t, testRequests, testRequest)

foundTests = append(foundTests, testRequest) // ensure each test is only registered once
w.WriteHeader(http.StatusOK)
assert.NoError(t, json.NewEncoder(w).Encode(&types.TestCreateResponse{}))
require.NoError(t, json.NewEncoder(w).Encode(&types.TestCreateResponse{}))
case "/findings":
findingRequest := &types.FindingCreateRequest{}
assert.NoError(t, json.Unmarshal(body, findingRequest))
require.NoError(t, json.Unmarshal(body, findingRequest))
assert.Contains(t, findingsRequests, findingRequest)

foundFindings = append(foundFindings, findingRequest) // ensure each finding is only registered once
assert.NoError(t, json.NewEncoder(w).Encode(createFindingResponse(findingRequest)))
require.NoError(t, json.NewEncoder(w).Encode(createFindingResponse(findingRequest)))
case "/engagements":
engagementRequest := &types.EngagementRequest{}
assert.NoError(t, json.Unmarshal(body, engagementRequest))
require.NoError(t, json.Unmarshal(body, engagementRequest))

assert.Contains(t, engagementRequests, engagementRequest)
foundEngagements = append(foundEngagements, engagementRequest) // ensure each engagement is only registered once
w.WriteHeader(http.StatusOK)
assert.NoError(t, json.NewEncoder(w).Encode(&types.EngagementResponse{}))
require.NoError(t, json.NewEncoder(w).Encode(&types.EngagementResponse{}))
default:
log.Fatal("unexpected url ", r.URL.String())
}
}))
defer ts.Close()
client, err := client.DojoClient(ts.URL, apiKey, dojoUser)
assert.NoError(t, err)
require.NoError(t, err)

err = handleRawResults(product, client, input)
assert.NoError(t, err)
require.NoError(t, err)

assert.Equal(t, foundEngagements, engagementRequests)
assert.Equal(t, foundFindings, findingsRequests)
Expand All @@ -228,7 +229,7 @@ func TestHandleEnrichedResults(t *testing.T) {

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

switch string(r.URL.String()) {
case "/users":
Expand All @@ -249,43 +250,43 @@ func TestHandleEnrichedResults(t *testing.T) {
},
},
}
assert.NoError(t, json.NewEncoder(w).Encode(result))
require.NoError(t, json.NewEncoder(w).Encode(result))

case "/tests":
testRequest := &types.TestCreateRequest{}
assert.NoError(t, json.Unmarshal(body, testRequest))
require.NoError(t, json.Unmarshal(body, testRequest))
assert.Contains(t, testRequests, testRequest)

foundTests = append(foundTests, testRequest) // ensure each test is only registered once
w.WriteHeader(http.StatusOK)
assert.NoError(t, json.NewEncoder(w).Encode(&types.TestCreateResponse{}))
require.NoError(t, json.NewEncoder(w).Encode(&types.TestCreateResponse{}))

case "/findings":
findingRequest := &types.FindingCreateRequest{}
assert.NoError(t, json.Unmarshal(body, &findingRequest))
require.NoError(t, json.Unmarshal(body, &findingRequest))
assert.Contains(t, findingsRequests, findingRequest)
assert.Contains(t, string(body), "Policy.Blah.Decision")
foundFindings = append(foundFindings, findingRequest) // ensure each finding is only registered once

assert.NoError(t, json.NewEncoder(w).Encode(createFindingResponse(findingRequest)))
require.NoError(t, json.NewEncoder(w).Encode(createFindingResponse(findingRequest)))
case "/engagements":
engagementRequest := &types.EngagementRequest{}
assert.NoError(t, json.Unmarshal(body, &engagementRequest))
require.NoError(t, json.Unmarshal(body, &engagementRequest))

assert.Contains(t, engagementRequests, engagementRequest)
foundEngagements = append(foundEngagements, engagementRequest) // ensure each engagement is only registered once
w.WriteHeader(http.StatusOK)
assert.NoError(t, json.NewEncoder(w).Encode(&types.EngagementResponse{}))
require.NoError(t, json.NewEncoder(w).Encode(&types.EngagementResponse{}))
default:
log.Fatal("unexpected url ", r.URL.String())
}
}))
defer ts.Close()
client, err := client.DojoClient(ts.URL, apiKey, dojoUser)
assert.NoError(t, err)
require.NoError(t, err)

err = handleEnrichedResults(product, client, input)
assert.NoError(t, err)
require.NoError(t, err)

assert.Equal(t, foundEngagements, engagementRequests)
assert.Equal(t, foundFindings, findingsRequests)
Expand Down
45 changes: 23 additions & 22 deletions components/consumers/dependency-track/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
v1 "github.com/ocurity/dracon/api/proto/v1"
cyclonedx "github.com/ocurity/dracon/pkg/cyclonedx"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestUploadBomsFromRaw(t *testing.T) {
Expand All @@ -28,32 +29,32 @@ func TestUploadBomsFromRaw(t *testing.T) {
expectedToken := "7c78f6c9-token"
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var actualRequest dtrack.BOMUploadRequest
assert.NoError(t, json.Unmarshal(body, &actualRequest))
require.NoError(t, json.Unmarshal(body, &actualRequest))
assert.Equal(t, expectedRequest, actualRequest)

_, err = w.Write([]byte("{\"Token\":\"" + expectedToken + "\"}"))
assert.NoError(t, err)
require.NoError(t, err)
}))
defer ts.Close()
projectUUID = projUUID.String()
apiKey = "test"
projectName = "test"
c, err := dtrack.NewClient(ts.URL, dtrack.WithAPIKey(apiKey))
assert.NoError(t, err)
require.NoError(t, err)

client = c
issues, err := cyclonedx.ToDracon([]byte(saasBOM), "json")

assert.NoError(t, err)
require.NoError(t, err)
ltr := v1.LaunchToolResponse{
ToolName: "SAT",
Issues: issues,
}
tokens, err := uploadBOMsFromRaw([]*v1.LaunchToolResponse{&ltr})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, tokens, []string{expectedToken})
}

Expand All @@ -69,27 +70,27 @@ func TestUploadBomsFromEnriched(t *testing.T) {
expectedToken := "7c78f6c9-token"
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var actualRequest dtrack.BOMUploadRequest
assert.NoError(t, json.Unmarshal(body, &actualRequest))
require.NoError(t, json.Unmarshal(body, &actualRequest))
assert.Equal(t, expectedRequest, actualRequest)

_, err = w.Write([]byte("{\"Token\":\"" + expectedToken + "\"}"))
assert.NoError(t, err)
require.NoError(t, err)
}))
defer ts.Close()

projectUUID = projUUID.String()
apiKey = "test"
projectName = "test"
c, err := dtrack.NewClient(ts.URL, dtrack.WithAPIKey(apiKey))
assert.NoError(t, err)
require.NoError(t, err)

client = c
issues, err := cyclonedx.ToDracon([]byte(saasBOM), "json")

assert.NoError(t, err)
require.NoError(t, err)
ltr := v1.LaunchToolResponse{
ToolName: "SAT",
Issues: issues,
Expand All @@ -101,7 +102,7 @@ func TestUploadBomsFromEnriched(t *testing.T) {
},
}
tokens, err := uploadBOMSFromEnriched([]*v1.EnrichedLaunchToolResponse{&eltr})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, tokens, []string{expectedToken})
}

Expand Down Expand Up @@ -130,14 +131,14 @@ func TestUploadBomsFromEnrichedWithOwners(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.String() == "/api/v1/bom" {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var actualRequest dtrack.BOMUploadRequest
assert.NoError(t, json.Unmarshal(body, &actualRequest))
require.NoError(t, json.Unmarshal(body, &actualRequest))
assert.Equal(t, expectedRequest, actualRequest)

_, err = w.Write([]byte("{\"Token\":\"" + expectedToken + "\"}"))
assert.NoError(t, err)
require.NoError(t, err)
} else if r.URL.String() == "/api/v1/project/7c78f6c9-b4b0-493c-a912-0bb0a4f221f1" {
project := dtrack.Project{
UUID: projUUID,
Expand All @@ -146,17 +147,17 @@ func TestUploadBomsFromEnrichedWithOwners(t *testing.T) {
Tags: []dtrack.Tag{{Name: "foo:bar"}, {Name: "Owner:foo"}},
}
res, err := json.Marshal(project)
assert.NoError(t, err)
require.NoError(t, err)

_, err = w.Write(res)
assert.NoError(t, err)
require.NoError(t, err)
w.WriteHeader(http.StatusOK)
} else if r.URL.String() == "/api/v1/project" && r.Method == http.MethodPost {
body, err := io.ReadAll(r.Body)
assert.NoError(t, err)
require.NoError(t, err)

var req dtrack.Project
assert.NoError(t, json.Unmarshal(body, &req))
require.NoError(t, json.Unmarshal(body, &req))
assert.Equal(t, req.Tags, expectedProjectUpdate.Tags)
} else {
assert.Fail(t, r.URL.String())
Expand All @@ -168,11 +169,11 @@ func TestUploadBomsFromEnrichedWithOwners(t *testing.T) {
apiKey = "test"
projectName = "test"
c, err := dtrack.NewClient(ts.URL, dtrack.WithAPIKey(apiKey))
assert.NoError(t, err)
require.NoError(t, err)

client = c
issues, err := cyclonedx.ToDracon([]byte(saasBOM), "json")
assert.NoError(t, err)
require.NoError(t, err)

ltr := v1.LaunchToolResponse{
ToolName: "SAT",
Expand All @@ -192,7 +193,7 @@ func TestUploadBomsFromEnrichedWithOwners(t *testing.T) {
}
ownerAnnotation = "Owner"
tokens, err := uploadBOMSFromEnriched([]*v1.EnrichedLaunchToolResponse{&eltr})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, tokens, []string{expectedToken})
}

Expand Down
Loading

0 comments on commit c93dab3

Please sign in to comment.