go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/plist/plist_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package plist
     5  
     6  import (
     7  	"bytes"
     8  	"encoding/base64"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestBase64DecodePlist(t *testing.T) {
    16  	data := "YnBsaXN0MDDaAQIDBAUGBwgJCgsMDQ4XGBgaGxhcR3Vlc3RFbmFibGVkXxAZT3B0aW1pemVyTGFzdFJ1bkZvclN5c3RlbVxsYXN0VXNlck5hbWVbQWNjb3VudEluZm9fEBhPcHRpbWl6ZXJMYXN0UnVuRm9yQnVpbGRfEBpVc2VWb2ljZU92ZXJMZWdhY3lNaWdyYXRlZF8QE0Rpc2FibGVGREVBdXRvTG9naW5YbGFzdFVzZXJfEA9Mb2dpbndpbmRvd1RleHRcU0hPV0ZVTExOQU1FCBILBQEAXWFkbWluaXN0cmF0b3LTDxAREhMVXE1heGltdW1Vc2Vyc1lPbkNvbnNvbGVbRmlyc3RMb2dpbnMQAdEUEl1hZG1pbmlzdHJhdG9y0RYSXWFkbWluaXN0cmF0b3ISAoYKAAkJWGxvZ2dlZEluWmxvZ2luIHRleHQJAAgAHQAqAEYAUwBfAHoAlwCtALYAyADVANYA2wDpAPAA/QEHARMBFQEYASYBKQE3ATwBPQE+AUcBUgAAAAAAAAIBAAAAAAAAAB0AAAAAAAAAAAAAAAAAAAFT"
    17  
    18  	decodedData, err := base64.StdEncoding.DecodeString(data)
    19  	require.NoError(t, err)
    20  
    21  	plistData, err := Decode(bytes.NewReader(decodedData))
    22  	require.NoError(t, err)
    23  	assert.NotNil(t, plistData)
    24  	assert.Equal(t, "login text", plistData["LoginwindowText"])
    25  
    26  	// convert binary to xml and parse again
    27  	plistXmlData, err := ToXml(bytes.NewReader(decodedData))
    28  	require.NoError(t, err)
    29  	assert.NotNil(t, plistXmlData)
    30  
    31  	plistData, err = Decode(bytes.NewReader(decodedData))
    32  	require.NoError(t, err)
    33  	assert.NotNil(t, plistData)
    34  	assert.Equal(t, "login text", plistData["LoginwindowText"])
    35  }