github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/libkb/name_encoding_test.go (about)

     1  // Copyright 2021 Keybase Inc. All rights reserved.
     2  // Use of this source code is governed by a BSD
     3  // license that can be found in the LICENSE file.
     4  
     5  package libkb
     6  
     7  import (
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestNameEncoding(t *testing.T) {
    14  	var fixture = [][2]string{
    15  		{`foo`, `foo`},
    16  		{`foo\bar`, `foo‰5cbar`},
    17  		{`foo‰bar`, `foo‰2030bar`},
    18  		{`foo‰\bar`, `foo‰2030‰5cbar`},
    19  		{`foo%bar`, `foo%bar`},
    20  		{"<", "‰3c"},
    21  		{">", "‰3e"},
    22  		{":", "‰3a"},
    23  		{"\"", "‰22"},
    24  		{"/", "‰2f"},
    25  		{"\\", "‰5c"},
    26  		{"|", "‰7c"},
    27  		{"?", "‰3f"},
    28  		{"*", "‰2a"},
    29  	}
    30  
    31  	for _, entry := range fixture {
    32  		require.Equal(t, entry[1], EncodeKbfsNameForWindows(entry[0]))
    33  
    34  		kbfsName, err := DecodeWindowsNameForKbfs(entry[1])
    35  		require.NoError(t, err)
    36  		require.Equal(t, entry[0], kbfsName)
    37  
    38  	}
    39  
    40  	_, err := DecodeWindowsNameForKbfs(`a\b`)
    41  	require.Error(t, err)
    42  }