1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-05 21:15:38 -05:00
Files
DankMaterialShell/core/internal/server/cups/pkhelper_test.go
bbedward e6c3ae9397 cups: add comprehensive CUPs setting page
- Add printers
- Delete printers
- Use polkit APIs as fallback on auth errors
- Fix ref system to conditionally subscribe to cups when wanted
2025-11-29 17:35:21 -05:00

96 lines
2.3 KiB
Go

package cups
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseDevicesMap(t *testing.T) {
tests := []struct {
name string
input map[string]string
wantLen int
wantURIs []string
}{
{
name: "empty",
input: map[string]string{},
wantLen: 0,
wantURIs: nil,
},
{
name: "single_device",
input: map[string]string{
"device-uri:0": "usb://HP/LaserJet",
"device-class:0": "direct",
"device-info:0": "HP LaserJet",
"device-make-and-model:0": "HP LaserJet 1020",
"device-id:0": "MFG:HP;MDL:LaserJet",
},
wantLen: 1,
wantURIs: []string{"usb://HP/LaserJet"},
},
{
name: "multiple_devices",
input: map[string]string{
"device-uri:0": "usb://HP/LaserJet",
"device-class:0": "direct",
"device-info:0": "HP LaserJet",
"device-uri:1": "socket://192.168.1.100",
"device-class:1": "network",
"device-info:1": "Network Printer",
},
wantLen: 2,
wantURIs: []string{"usb://HP/LaserJet", "socket://192.168.1.100"},
},
{
name: "malformed_key",
input: map[string]string{
"no-colon-here": "value",
},
wantLen: 0,
wantURIs: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := parseDevicesMap(tt.input)
assert.Len(t, got, tt.wantLen)
if tt.wantURIs != nil {
gotURIs := make(map[string]bool)
for _, d := range got {
gotURIs[d.URI] = true
}
for _, uri := range tt.wantURIs {
assert.True(t, gotURIs[uri], "expected URI %s not found", uri)
}
}
})
}
}
func TestParseDevicesMap_Attributes(t *testing.T) {
input := map[string]string{
"device-uri:0": "usb://HP/LaserJet",
"device-class:0": "direct",
"device-info:0": "HP LaserJet",
"device-make-and-model:0": "HP LaserJet 1020",
"device-id:0": "MFG:HP;MDL:LaserJet",
"device-location:0": "USB Port",
}
got := parseDevicesMap(input)
assert.Len(t, got, 1)
dev := got[0]
assert.Equal(t, "usb://HP/LaserJet", dev.URI)
assert.Equal(t, "direct", dev.Class)
assert.Equal(t, "HP LaserJet", dev.Info)
assert.Equal(t, "HP LaserJet 1020", dev.MakeModel)
assert.Equal(t, "MFG:HP;MDL:LaserJet", dev.ID)
assert.Equal(t, "USB Port", dev.Location)
}