go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/mrn/mrn_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package mrn
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestMrnParser(t *testing.T) {
    14  	var mrn *MRN
    15  	var err error
    16  
    17  	fullResourceName := "//service.example.com/key1/:value1:/key2/:value2:/key3/:value3:"
    18  	mrn, err = NewMRN(fullResourceName)
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, "service.example.com", mrn.ServiceName)
    21  	assert.Equal(t, "service", ServiceID(mrn.ServiceName, ".example.com"))
    22  	assert.Equal(t, "key1/:value1:/key2/:value2:/key3/:value3:", mrn.RelativeResourceName)
    23  	assert.Equal(t, fullResourceName, mrn.String())
    24  }
    25  
    26  func TestCollectionID(t *testing.T) {
    27  	fullResourceName := "//service.example.com/key1/:value1:/key2/:value2:/key3/:value3:"
    28  	mrn, err := NewMRN(fullResourceName)
    29  	assert.Nil(t, err)
    30  
    31  	space, err := mrn.ResourceID("key1")
    32  	require.NoError(t, err)
    33  	assert.Equal(t, ":value1:", space)
    34  	region, err := mrn.ResourceID("key2")
    35  	require.NoError(t, err)
    36  	assert.Equal(t, ":value2:", region)
    37  	asset, err := mrn.ResourceID("key3")
    38  	require.NoError(t, err)
    39  	assert.Equal(t, ":value3:", asset)
    40  }
    41  
    42  func TestEquals(t *testing.T) {
    43  	fullResourceName := "//service.example.com/key1/:value1:/key2/:value2:/key3/:value3:"
    44  	mrn, err := NewMRN(fullResourceName)
    45  	require.NoError(t, err)
    46  	assert.True(t, mrn.Equals(fullResourceName))
    47  
    48  	mrn, err = NewMRN("//service.example.com/key1/:value1:/key2/:value2:/key3/:value4:")
    49  	require.NoError(t, err)
    50  	assert.False(t, mrn.Equals(fullResourceName))
    51  }
    52  
    53  func TestMrnToPropertyName(t *testing.T) {
    54  	mrn, err := NewMRN("//policy.api.mondoo.app/bundle/M%2FVSHZaChL8=/queries/sshdCiphers")
    55  	require.NoError(t, err)
    56  
    57  	res, err := mrn.ResourceID("queries")
    58  	require.NoError(t, err)
    59  	assert.Equal(t, "sshdCiphers", res)
    60  
    61  	res, err = mrn.ResourceID("nothere")
    62  	assert.Error(t, err)
    63  	assert.Equal(t, "", res)
    64  }