Skip to content

Commit ec2a952

Browse files
Danielius1922Daniel Adam
authored andcommitted
SonarCloud: Add unit tests to increase code coverage
1 parent b47ab1b commit ec2a952

6 files changed

Lines changed: 675 additions & 8 deletions

File tree

.golangci.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
linters-settings:
2-
gocyclo:
3-
min-complexity: 15
4-
govet:
5-
check-shadowing: true
62
exhaustive:
73
default-signifies-exhaustive: true
4+
gocyclo:
5+
min-complexity: 15
86
gomodguard:
97
blocked:
108
modules:
119
- github.com/pkg/errors:
1210
recommendations:
1311
- errors
12+
gomoddirectives:
13+
replace-allow-list:
14+
- github.com/pion/dtls/v2
15+
govet:
16+
check-shadowing: true
1417
stylecheck:
1518
# STxxxx checks in https://staticcheck.io/docs/configuration/options/#checks
1619
# Default: ["*"]

bridge/device/cloud/manager.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,17 @@ func (c *Manager) isCredsExpiring() bool {
295295
return !time.Now().Before(c.creds.ValidUntil.Add(-time.Second * 10))
296296
}
297297

298+
func getResourceTypesFilter(request *mux.Message) []string {
299+
queries, _ := request.Options().Queries()
300+
resourceTypesFitler := []string{}
301+
for _, q := range queries {
302+
if len(q) > 3 && q[:3] == "rt=" {
303+
resourceTypesFitler = append(resourceTypesFitler, q[3:])
304+
}
305+
}
306+
return resourceTypesFitler
307+
}
308+
298309
func (c *Manager) serveCOAP(w mux.ResponseWriter, request *mux.Message) {
299310
request.Message.AddQuery("di=" + c.deviceID.String())
300311
r := net.Request{
@@ -316,7 +327,7 @@ func (c *Manager) serveCOAP(w mux.ResponseWriter, request *mux.Message) {
316327
}
317328
resp, err = c.handler(&r)
318329
case plgdResources.ResourceURI:
319-
links := c.getLinks(schema.Endpoints{}, c.deviceID, nil, resources.PublishToCloud)
330+
links := c.getLinks(schema.Endpoints{}, c.deviceID, getResourceTypesFilter(request), resources.PublishToCloud)
320331
links = patchDeviceLink(links)
321332
links = discovery.PatchLinks(links, c.deviceID.String())
322333
resp, err = resources.CreateResponseContent(request.Context(), links, codes.Content)

client/core/sdkError_test.go

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
// ************************************************************************
2+
// Copyright (C) 2024 plgd.dev, s.r.o.
3+
//
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
//
8+
// http://www.apache.org/licenses/LICENSE-2.0
9+
//
10+
// Unless required by applicable law or agreed to in writing, software
11+
// distributed under the License is distributed on an "AS IS" BASIS,
12+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
// See the License for the specific language governing permissions and
14+
// limitations under the License.
15+
// ************************************************************************
16+
17+
package core_test
18+
19+
import (
20+
"errors"
21+
"testing"
22+
23+
"github.com/plgd-dev/device/v2/client/core"
24+
"github.com/stretchr/testify/require"
25+
"google.golang.org/grpc/codes"
26+
)
27+
28+
var err = errors.New("test")
29+
30+
func TestMakeCanceled(t *testing.T) {
31+
sdkErr := core.SdkError{}
32+
require.True(t, errors.As(core.MakeCanceled(err), &sdkErr))
33+
require.Equal(t, codes.Canceled, sdkErr.GetCode())
34+
require.Equal(t, err, sdkErr.Unwrap())
35+
}
36+
37+
func TestMakeUnknown(t *testing.T) {
38+
sdkErr := core.SdkError{}
39+
require.True(t, errors.As(core.MakeUnknown(err), &sdkErr))
40+
require.Equal(t, codes.Unknown, sdkErr.GetCode())
41+
require.Equal(t, err, sdkErr.Unwrap())
42+
}
43+
44+
func TestMakeInvalidArgument(t *testing.T) {
45+
sdkErr := core.SdkError{}
46+
require.True(t, errors.As(core.MakeInvalidArgument(err), &sdkErr))
47+
require.Equal(t, codes.InvalidArgument, sdkErr.GetCode())
48+
require.Equal(t, err, sdkErr.Unwrap())
49+
}
50+
51+
func TestMakeDeadlineExceeded(t *testing.T) {
52+
sdkErr := core.SdkError{}
53+
require.True(t, errors.As(core.MakeDeadlineExceeded(err), &sdkErr))
54+
require.Equal(t, codes.DeadlineExceeded, sdkErr.GetCode())
55+
require.Equal(t, err, sdkErr.Unwrap())
56+
}
57+
58+
func TestMakeNotFound(t *testing.T) {
59+
sdkErr := core.SdkError{}
60+
require.True(t, errors.As(core.MakeNotFound(err), &sdkErr))
61+
require.Equal(t, codes.NotFound, sdkErr.GetCode())
62+
require.Equal(t, err, sdkErr.Unwrap())
63+
}
64+
65+
func TestMakeAlreadyExists(t *testing.T) {
66+
sdkErr := core.SdkError{}
67+
require.True(t, errors.As(core.MakeAlreadyExists(err), &sdkErr))
68+
require.Equal(t, codes.AlreadyExists, sdkErr.GetCode())
69+
require.Equal(t, err, sdkErr.Unwrap())
70+
}
71+
72+
func TestMakePermissionDenied(t *testing.T) {
73+
sdkErr := core.SdkError{}
74+
require.True(t, errors.As(core.MakePermissionDenied(err), &sdkErr))
75+
require.Equal(t, codes.PermissionDenied, sdkErr.GetCode())
76+
require.Equal(t, err, sdkErr.Unwrap())
77+
}
78+
79+
func TestMakeResourceExhausted(t *testing.T) {
80+
sdkErr := core.SdkError{}
81+
require.True(t, errors.As(core.MakeResourceExhausted(err), &sdkErr))
82+
require.Equal(t, codes.ResourceExhausted, sdkErr.GetCode())
83+
require.Equal(t, err, sdkErr.Unwrap())
84+
}
85+
86+
func TestMakeFailedPrecondition(t *testing.T) {
87+
sdkErr := core.SdkError{}
88+
require.True(t, errors.As(core.MakeFailedPrecondition(err), &sdkErr))
89+
require.Equal(t, codes.FailedPrecondition, sdkErr.GetCode())
90+
require.Equal(t, err, sdkErr.Unwrap())
91+
}
92+
93+
func TestMakeAborted(t *testing.T) {
94+
sdkErr := core.SdkError{}
95+
require.True(t, errors.As(core.MakeAborted(err), &sdkErr))
96+
require.Equal(t, codes.Aborted, sdkErr.GetCode())
97+
require.Equal(t, err, sdkErr.Unwrap())
98+
}
99+
100+
func TestMakeOutOfRange(t *testing.T) {
101+
sdkErr := core.SdkError{}
102+
require.True(t, errors.As(core.MakeOutOfRange(err), &sdkErr))
103+
require.Equal(t, codes.OutOfRange, sdkErr.GetCode())
104+
require.Equal(t, err, sdkErr.Unwrap())
105+
}
106+
107+
func TestMakeUnimplemented(t *testing.T) {
108+
sdkErr := core.SdkError{}
109+
require.True(t, errors.As(core.MakeUnimplemented(err), &sdkErr))
110+
require.Equal(t, codes.Unimplemented, sdkErr.GetCode())
111+
require.Equal(t, err, sdkErr.Unwrap())
112+
}
113+
114+
func TestMakeInternal(t *testing.T) {
115+
sdkErr := core.SdkError{}
116+
require.True(t, errors.As(core.MakeInternal(err), &sdkErr))
117+
require.Equal(t, codes.Internal, sdkErr.GetCode())
118+
require.Equal(t, err, sdkErr.Unwrap())
119+
}
120+
121+
func TestMakeInternalStr(t *testing.T) {
122+
sdkErr := core.SdkError{}
123+
require.True(t, errors.As(core.MakeInternalStr("test:%v", err), &sdkErr))
124+
require.Equal(t, codes.Internal, sdkErr.GetCode())
125+
require.Contains(t, sdkErr.Error(), "test:"+err.Error())
126+
}
127+
128+
func TestMakeUnavailable(t *testing.T) {
129+
sdkErr := core.SdkError{}
130+
require.True(t, errors.As(core.MakeUnavailable(err), &sdkErr))
131+
require.Equal(t, codes.Unavailable, sdkErr.GetCode())
132+
require.Equal(t, err, sdkErr.Unwrap())
133+
}
134+
135+
func TestMakeDataLoss(t *testing.T) {
136+
sdkErr := core.SdkError{}
137+
require.True(t, errors.As(core.MakeDataLoss(err), &sdkErr))
138+
require.Equal(t, codes.DataLoss, sdkErr.GetCode())
139+
require.Equal(t, err, sdkErr.Unwrap())
140+
}
141+
142+
func TestMakeUnauthenticated(t *testing.T) {
143+
sdkErr := core.SdkError{}
144+
require.True(t, errors.As(core.MakeUnauthenticated(err), &sdkErr))
145+
require.Equal(t, codes.Unauthenticated, sdkErr.GetCode())
146+
require.Equal(t, err, sdkErr.Unwrap())
147+
}

0 commit comments

Comments
 (0)