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

mindersec / minder / 14376078638

10 Apr 2025 08:39AM UTC coverage: 56.857%. First build
14376078638

Pull #5515

github

web-flow
Merge ea220ae51 into 0f5ecd80e
Pull Request #5515: Don't return errors when getting properties

27 of 49 new or added lines in 22 files covered. (55.1%)

18305 of 32195 relevant lines covered (56.86%)

37.04 hits per line

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

0.0
/internal/providers/gitlab/manager/webhook_handlers_merge_requests.go
1
// SPDX-FileCopyrightText: Copyright 2024 The Minder Authors
2
// SPDX-License-Identifier: Apache-2.0
3

4
package manager
5

6
import (
7
        "fmt"
8
        "net/http"
9

10
        "github.com/ThreeDotsLabs/watermill/message"
11
        "github.com/google/uuid"
12
        "github.com/rs/zerolog"
13
        gitlablib "gitlab.com/gitlab-org/api/client-go"
14

15
        entmsg "github.com/mindersec/minder/internal/entities/handlers/message"
16
        "github.com/mindersec/minder/internal/providers/gitlab"
17
        minderv1 "github.com/mindersec/minder/pkg/api/protobuf/go/minder/v1"
18
        "github.com/mindersec/minder/pkg/entities/properties"
19
        "github.com/mindersec/minder/pkg/eventer/constants"
20
)
21

22
func (m *providerClassManager) handleMergeRequest(l zerolog.Logger, r *http.Request) error {
×
23
        l.Debug().Msg("handling merge request event")
×
24

×
25
        mergeRequestEvent := gitlablib.MergeEvent{}
×
26
        if err := decodeJSONSafe(r.Body, &mergeRequestEvent); err != nil {
×
27
                l.Error().Err(err).Msg("error decoding merge request event")
×
28
                return fmt.Errorf("error decoding merge request event: %w", err)
×
29
        }
×
30

31
        mrID := mergeRequestEvent.ObjectAttributes.ID
×
32
        if mrID == 0 {
×
33
                return fmt.Errorf("merge request event missing ID")
×
34
        }
×
35

36
        mrIID := mergeRequestEvent.ObjectAttributes.IID
×
37
        if mrIID == 0 {
×
38
                return fmt.Errorf("merge request event missing IID")
×
39
        }
×
40

41
        rawProjectID := mergeRequestEvent.Project.ID
×
42
        if rawProjectID == 0 {
×
43
                return fmt.Errorf("merge request event missing project ID")
×
44
        }
×
45

46
        switch mergeRequestEvent.ObjectAttributes.Action {
×
47
        case "open", "reopen":
×
48
                return m.publishMergeRequestMessage(mrID, mrIID, rawProjectID,
×
49
                        constants.TopicQueueOriginatingEntityAdd)
×
50
        case "close":
×
51
                return m.publishMergeRequestMessage(mrID, mrIID, rawProjectID,
×
52
                        constants.TopicQueueOriginatingEntityDelete)
×
53
        case "update":
×
54
                return m.publishMergeRequestMessage(mrID, mrIID, rawProjectID,
×
55
                        constants.TopicQueueRefreshEntityAndEvaluate)
×
56
        default:
×
57
                return nil
×
58
        }
59
}
60

61
func (m *providerClassManager) publishMergeRequestMessage(
62
        mrID, mrIID, rawProjectID int, queueTopic string) error {
×
63
        mrUpstreamID := gitlab.FormatPullRequestUpstreamID(mrID)
×
64
        mrformattedIID := gitlab.FormatPullRequestUpstreamID(mrIID)
×
65
        mrProjectID := gitlab.FormatRepositoryUpstreamID(rawProjectID)
×
66

×
67
        // Form identifying properties
×
NEW
68
        identifyingProps := properties.NewProperties(map[string]any{
×
69
                properties.PropertyUpstreamID: mrUpstreamID,
×
70
                gitlab.PullRequestNumber:      mrformattedIID,
×
71
                gitlab.PullRequestProjectID:   mrProjectID,
×
72
        })
×
73

×
NEW
74
        repoIdentifyingProps := properties.NewProperties(map[string]any{
×
75
                properties.PropertyUpstreamID: mrProjectID,
×
76
        })
×
77

×
78
        // Form message to publish
×
79
        outm := entmsg.NewEntityRefreshAndDoMessage()
×
80
        outm.WithEntity(minderv1.Entity_ENTITY_PULL_REQUESTS, identifyingProps)
×
81
        outm.WithOriginator(minderv1.Entity_ENTITY_REPOSITORIES, repoIdentifyingProps)
×
82
        outm.WithProviderClassHint(gitlab.Class)
×
83

×
84
        // Convert message for publishing
×
85
        msgID := uuid.New().String()
×
86
        msg := message.NewMessage(msgID, nil)
×
87
        if err := outm.ToMessage(msg); err != nil {
×
88
                return fmt.Errorf("error converting message to protobuf: %w", err)
×
89
        }
×
90

91
        // Publish message
92
        if err := m.pub.Publish(queueTopic, msg); err != nil {
×
93
                return fmt.Errorf("error publishing refresh and eval message: %w", err)
×
94
        }
×
95

96
        return nil
×
97
}
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