go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/lsblk_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package resources 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestParseBlockEntries(t *testing.T) { 13 data := `{"blockdevices": [ 14 { 15 "name": "loop0", 16 "fstype": "squashfs", 17 "fsver": "4.0", 18 "label": null, 19 "uuid": null, 20 "fsavail": "0", 21 "fsuse%": "100%", 22 "mountpoints": [ 23 "/var/lib/snapd/snap/core/10577" 24 ] 25 },{ 26 "name": "sda", 27 "fstype": "btrfs", 28 "fsver": null, 29 "label": "storage01", 30 "uuid": "6060df9a-7e53-439c-9189-ba9657161fd4", 31 "fsavail": "764.8G", 32 "fsuse%": "80%", 33 "mountpoints": [ 34 "/data" 35 ] 36 },{ 37 "name": "sdb", 38 "fstype": "btrfs", 39 "fsver": null, 40 "label": "storage01", 41 "uuid": "6060df9a-7e53-439c-9189-ba9657161fd4", 42 "fsavail": null, 43 "fsuse%": null, 44 "mountpoints": [ 45 null 46 ] 47 },{ 48 "name": "sdc", 49 "fstype": null, 50 "fsver": null, 51 "label": null, 52 "uuid": null, 53 "fsavail": null, 54 "fsuse%": null, 55 "mountpoints": [ 56 null 57 ], 58 "children": [ 59 { 60 "name": "sdc1", 61 "fstype": "vfat", 62 "fsver": "FAT32", 63 "label": null, 64 "uuid": "0EC7-F4C1", 65 "fsavail": "193.5M", 66 "fsuse%": "62%", 67 "mountpoints": [ 68 "/boot" 69 ] 70 },{ 71 "name": "sdc2", 72 "fstype": "ext4", 73 "fsver": "1.0", 74 "label": null, 75 "uuid": "6c44ec5a-4727-47d4-b485-81cff72b207e", 76 "fsavail": "80.2G", 77 "fsuse%": "77%", 78 "mountpoints": [ 79 "/" 80 ] 81 } 82 ] 83 },{ 84 "name": "sdd", 85 "fstype": "btrfs", 86 "fsver": null, 87 "label": "storage01", 88 "uuid": "6060df9a-7e53-439c-9189-ba9657161fd4", 89 "fsavail": null, 90 "fsuse%": null, 91 "mountpoints": [ 92 null 93 ] 94 } 95 ] 96 }` 97 devices, err := parseBlockEntries([]byte(data)) 98 assert.Nil(t, err) 99 assert.Equal(t, len(devices.Blockdevices), 5) 100 assert.Equal(t, devices.Blockdevices, []blockdevice{{ 101 Name: "loop0", 102 Fstype: "squashfs", 103 Label: "", 104 Uuid: "", 105 Mountpoints: []interface{}{"/var/lib/snapd/snap/core/10577"}, 106 }, { 107 Name: "sda", 108 Fstype: "btrfs", 109 Label: "storage01", 110 Uuid: "6060df9a-7e53-439c-9189-ba9657161fd4", 111 Mountpoints: []interface{}{"/data"}, 112 }, { 113 Name: "sdb", 114 Fstype: "btrfs", 115 Label: "storage01", 116 Uuid: "6060df9a-7e53-439c-9189-ba9657161fd4", 117 Mountpoints: []interface{}{nil}, 118 }, { 119 Name: "sdc", 120 Fstype: "", 121 Label: "", 122 Uuid: "", 123 Mountpoints: []interface{}{nil}, 124 Children: []blockdevice{{ 125 Name: "sdc1", 126 Fstype: "vfat", 127 Label: "", 128 Uuid: "0EC7-F4C1", 129 Mountpoints: []interface{}{"/boot"}, 130 }, { 131 Name: "sdc2", 132 Fstype: "ext4", 133 Label: "", 134 Uuid: "6c44ec5a-4727-47d4-b485-81cff72b207e", 135 Mountpoints: []interface{}{"/"}, 136 }}, 137 }, { 138 Name: "sdd", 139 Fstype: "btrfs", 140 Label: "storage01", 141 Uuid: "6060df9a-7e53-439c-9189-ba9657161fd4", 142 Mountpoints: []interface{}{nil}, 143 }}) 144 145 data = `{ 146 "blockdevices": [ 147 {"name": "xvda", "fstype": null, "label": null, "uuid": null, "mountpoint": null, 148 "children": [ 149 {"name": "xvda1", "fstype": "xfs", "label": "/", "uuid": "e6c06bf4-70a3-4524-84fa-35484afc0d19", "mountpoint": "/"} 150 ] 151 } 152 ] 153 }` 154 devices, err = parseBlockEntries([]byte(data)) 155 assert.Nil(t, err) 156 assert.Equal(t, len(devices.Blockdevices), 1) 157 assert.Equal(t, devices.Blockdevices, []blockdevice{{ 158 Name: "xvda", 159 Mountpoint: "", 160 Children: []blockdevice{{ 161 Name: "xvda1", 162 Fstype: "xfs", 163 Label: "/", 164 Uuid: "e6c06bf4-70a3-4524-84fa-35484afc0d19", 165 Mountpoint: "/", 166 }}, 167 }}) 168 }