MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / generateCSVModuleDescriptor

Function generateCSVModuleDescriptor

base/audit_events_test.go:57–107  ·  view source on GitHub ↗

generateCSVModuleDescriptor returns a CSV module descriptor for the given events.

(e events)

Source from the content-addressed store, hash-verified

55
56// generateCSVModuleDescriptor returns a CSV module descriptor for the given events.
57func generateCSVModuleDescriptor(e events) ([]byte, error) {
58 buf := bytes.NewBuffer(nil)
59 w := csv.NewWriter(buf)
60
61 // Write header
62 if err := w.Write([]string{"ID", "Name", "Description", "DefaultEnabled", "Filterable", "EventScope", "EventType", "MandatoryFields", "OptionalFields"}); err != nil {
63 return nil, err
64 }
65
66 keys := make([]AuditID, 0, len(e))
67 for k := range e {
68 keys = append(keys, k)
69 }
70 slices.Sort(keys)
71
72 for _, id := range keys {
73 event := e[id]
74
75 eventScope := "Database"
76 if event.IsGlobalEvent {
77 eventScope = "Global"
78 }
79
80 mandatoryFields := event.MandatoryFields
81 mandatoryFieldKeys := maps.Keys(mandatoryFields)
82 slices.Sort(mandatoryFieldKeys)
83 optionalFields := event.OptionalFields
84 optionalFieldKeys := maps.Keys(optionalFields)
85 slices.Sort(optionalFieldKeys)
86 if err := w.Write([]string{
87 id.String(),
88 event.Name,
89 event.Description,
90 strconv.FormatBool(event.EnabledByDefault),
91 strconv.FormatBool(event.FilteringPermitted),
92 eventScope,
93 string(event.EventType),
94 strings.Join(mandatoryFieldKeys, ", "),
95 strings.Join(optionalFieldKeys, ", "),
96 }); err != nil {
97 return nil, err
98 }
99 }
100
101 w.Flush()
102 if err := w.Error(); err != nil {
103 return nil, err
104 }
105
106 return buf.Bytes(), nil
107}
108
109func TestNonFilterableAuditEventsForScope(t *testing.T) {
110 tests := []struct {

Callers 1

Calls 5

SortMethod · 0.80
StringMethod · 0.65
WriteMethod · 0.45
FlushMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected