github.com/openebs/node-disk-manager@v1.9.1-0.20230225014141-4531f06ffa1e/pkg/udev/udev_test.go (about)

     1  /*
     2  Copyright 2018 OpenEBS Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package udev
    18  
    19  import (
    20  	"errors"
    21  	"testing"
    22  
    23  	"github.com/stretchr/testify/assert"
    24  )
    25  
    26  func TestNewUdev(t *testing.T) {
    27  	// Creating one udev struct with nil pointer it should return an error.
    28  	_, err := newUdev(nil)
    29  	assert.Equal(t, errors.New("unable to create Udevice object for null struct struct_udev"), err)
    30  
    31  	// Creating one udev struct with struct_udev mock data and compare both struct.
    32  	sUdev := mockDataStructUdev()
    33  	uDev2, err := newUdev(sUdev)
    34  	rxpecteddev1 := Udev{
    35  		uptr: sUdev,
    36  	}
    37  	assert.Equal(t, rxpecteddev1, *uDev2)
    38  	assert.Equal(t, nil, err)
    39  	defer uDev2.UnrefUdev()
    40  
    41  	// Creating one udev object for successful creation error should be nil.
    42  	uDev3, err := NewUdev()
    43  	if uDev3 != nil {
    44  		assert.Equal(t, nil, err)
    45  		defer uDev3.UnrefUdev()
    46  	}
    47  }
    48  
    49  func TestNewUdevEnumerate(t *testing.T) {
    50  	// In testcase1 enumerate one udev struct which is not nil. It should not return error.
    51  	// In testcase2 enumerate one udev struct which is nil. It should return error.
    52  	dev1, err := NewUdev()
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	defer dev1.UnrefUdev()
    57  	devenu1, err := dev1.NewUdevEnumerate()
    58  	if err != nil {
    59  		t.Fatal(err)
    60  	}
    61  	devenu1.UnrefUdevEnumerate()
    62  	dev2, _ := newUdev(nil)
    63  	if dev2 != nil {
    64  		t.Fatal("udev object should be nil for null pointer")
    65  	}
    66  	_, err = dev2.NewUdevEnumerate()
    67  	assert.Equal(t, errors.New("unable to create Udevenumerate object for for null struct struct_udev_enumerate"), err)
    68  }
    69  
    70  func TestNewDeviceFromSysPath(t *testing.T) {
    71  	// For invalid syspath NewDeviceFromSysPath() should return an error
    72  	udev, err := NewUdev()
    73  	if err != nil {
    74  		t.Fatal(err)
    75  	}
    76  	defer udev.UnrefUdev()
    77  	device1, err := udev.NewDeviceFromSysPath("")
    78  	if device1 != nil {
    79  		t.Fatal("device should be nil for invalid syspath")
    80  	}
    81  	assert.Equal(t, errors.New("unable to create Udevice object for null struct struct_udev_device"), err)
    82  	diskDetails, err := MockDiskDetails()
    83  	if err != nil {
    84  		t.Fatal(err)
    85  	}
    86  	device2, _ := udev.NewDeviceFromSysPath(diskDetails.SysPath)
    87  	if device2 != nil {
    88  		assert.Equal(t, diskDetails.SysPath, device2.GetSyspath())
    89  		defer device2.UdevDeviceUnref()
    90  	}
    91  }