• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / mender-server / 1978029483

11 Aug 2025 02:15PM UTC coverage: 65.755% (+0.3%) from 65.495%
1978029483

Pull #860

gitlab-ci

kjaskiewiczz
docs(useradm): move API specification to single file

Changelog: Title
Ticket: QA-1094
Signed-off-by: Krzysztof Jaskiewicz <krzysztof.jaskiewicz@northern.tech>
Pull Request #860: docs(useradm): move API specification to single file

29261 of 44500 relevant lines covered (65.76%)

1.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

12.5
/backend/pkg/mongo/codec/bson.go
1
// Copyright 2023 Northern.tech AS
2
//
3
//    Licensed under the Apache License, Version 2.0 (the "License");
4
//    you may not use this file except in compliance with the License.
5
//    You may obtain a copy of the License at
6
//
7
//        http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//    Unless required by applicable law or agreed to in writing, software
10
//    distributed under the License is distributed on an "AS IS" BASIS,
11
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//    See the License for the specific language governing permissions and
13
//    limitations under the License.
14

15
package codec
16

17
import (
18
        "fmt"
19
        "reflect"
20

21
        "github.com/google/uuid"
22
        "go.mongodb.org/mongo-driver/bson"
23
        "go.mongodb.org/mongo-driver/bson/bsoncodec"
24
        "go.mongodb.org/mongo-driver/bson/bsonrw"
25
)
26

27
var (
28
        tUUID = reflect.TypeOf(uuid.UUID{})
29
)
30

31
func NewRegistry() *bsoncodec.Registry {
2✔
32
        reg := bson.NewRegistry()
2✔
33
        // Add UUID encoder/decoder for github.com/google/uuid.UUID
2✔
34
        uuidCodec := UUIDCodec{}
2✔
35
        reg.RegisterTypeEncoder(tUUID, uuidCodec)
2✔
36
        reg.RegisterTypeDecoder(tUUID, uuidCodec)
2✔
37
        return reg
2✔
38
}
2✔
39

40
type UUIDCodec struct{}
41

42
func (UUIDCodec) EncodeValue(
43
        ec bsoncodec.EncodeContext,
44
        w bsonrw.ValueWriter,
45
        val reflect.Value,
46
) error {
×
47
        if !val.IsValid() || val.Type() != tUUID {
×
48
                return bsoncodec.ValueEncoderError{
×
49
                        Name:     "UUIDCodec",
×
50
                        Types:    []reflect.Type{tUUID},
×
51
                        Received: val,
×
52
                }
×
53
        }
×
54
        uid := val.Interface().(uuid.UUID)
×
55
        return w.WriteBinaryWithSubtype(uid[:], bson.TypeBinaryUUID)
×
56
}
57

58
func (UUIDCodec) DecodeValue(
59
        ec bsoncodec.DecodeContext,
60
        r bsonrw.ValueReader,
61
        val reflect.Value,
62
) error {
×
63
        if !val.CanSet() || val.Type() != tUUID {
×
64
                return bsoncodec.ValueDecoderError{
×
65
                        Name:     "UUIDCodec",
×
66
                        Types:    []reflect.Type{tUUID},
×
67
                        Received: val,
×
68
                }
×
69
        }
×
70

71
        var (
×
72
                data    []byte
×
73
                err     error
×
74
                subtype byte
×
75
                uid     uuid.UUID = uuid.Nil
×
76
        )
×
77
        switch rType := r.Type(); rType {
×
78
        case bson.TypeBinary:
×
79
                data, subtype, err = r.ReadBinary()
×
80
                switch subtype {
×
81
                case bson.TypeBinaryGeneric:
×
82
                        if len(data) != 16 {
×
83
                                return fmt.Errorf(
×
84
                                        "cannot decode %v as a UUID: "+
×
85
                                                "incorrect length: %d",
×
86
                                        data, len(data),
×
87
                                )
×
88
                        }
×
89

90
                        fallthrough
×
91
                case bson.TypeBinaryUUID,
92
                        bson.TypeBinaryUUIDOld:
×
93
                        copy(uid[:], data)
×
94

95
                default:
×
96
                        err = fmt.Errorf(
×
97
                                "cannot decode %v as a UUID: "+
×
98
                                        "incorrect subtype 0x%02x",
×
99
                                data, subtype,
×
100
                        )
×
101
                }
102

103
        case bson.TypeUndefined:
×
104
                err = r.ReadUndefined()
×
105

106
        case bson.TypeNull:
×
107
                err = r.ReadNull()
×
108

109
        default:
×
110
                err = fmt.Errorf("cannot decode %v as a UUID", rType)
×
111
        }
112

113
        if err != nil {
×
114
                return err
×
115
        }
×
116
        val.Set(reflect.ValueOf(uid))
×
117
        return nil
×
118
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc