github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/kbfs/libfs/util_test.go (about)

     1  // Copyright 2019 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 libfs
     6  
     7  import (
     8  	"os"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/keybase/client/go/kbfs/libkbfs"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestDeobfuscate(t *testing.T) {
    17  	os.Setenv("KEYBASE_TEST_OBFUSCATE_LOGS", "true")
    18  	ctx, _, fs := makeFS(t, "")
    19  	defer libkbfs.CheckConfigAndShutdown(ctx, t, fs.config)
    20  
    21  	t.Log("Check basic obfuscate->deobfuscate path")
    22  	p := "a/b"
    23  	err := fs.MkdirAll(p, os.FileMode(0600))
    24  	require.NoError(t, err)
    25  	obsPath := fs.PathForLogging(p)
    26  	require.NotEqual(t, p, obsPath)
    27  	res, err := Deobfuscate(ctx, fs, obsPath)
    28  	require.NoError(t, err)
    29  	require.Len(t, res, 1)
    30  	require.Equal(t, p, res[0])
    31  
    32  	t.Log("Check conflict suffix with no extension")
    33  	res, err = Deobfuscate(ctx, fs, obsPath+"-2")
    34  	require.NoError(t, err)
    35  	require.Len(t, res, 1)
    36  	require.Equal(t, p, res[0])
    37  
    38  	t.Log("Check conflict suffix with extension")
    39  	file := "a/foo.txt"
    40  	f, err := fs.Create(file)
    41  	require.NoError(t, err)
    42  	f.Close()
    43  	obsPathFile := fs.PathForLogging(file)
    44  	require.NotEqual(t, p, obsPathFile)
    45  	res, err = Deobfuscate(ctx, fs, obsPathFile)
    46  	require.NoError(t, err)
    47  	require.Len(t, res, 1)
    48  	require.Equal(t, file, res[0])
    49  	obsPathFileSuffix := strings.Replace(obsPathFile, ".txt", "-2.txt", 1)
    50  	res, err = Deobfuscate(ctx, fs, obsPathFileSuffix)
    51  	require.NoError(t, err)
    52  	require.Len(t, res, 1)
    53  	require.Equal(t, file, res[0])
    54  
    55  	t.Log("Check symlink")
    56  	p2 := "a/c"
    57  	err = fs.Symlink("b", p2)
    58  	require.NoError(t, err)
    59  	res, err = Deobfuscate(ctx, fs, obsPath)
    60  	require.NoError(t, err)
    61  	require.Len(t, res, 2)
    62  	require.Contains(t, res, p)
    63  	require.Contains(t, res, p2+" (b)")
    64  }