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  }