github.com/ncw/rclone@v1.48.1-0.20190724201158-a35aa1360e3e/fs/rc/internal_test.go (about)

     1  package rc
     2  
     3  import (
     4  	"context"
     5  	"runtime"
     6  	"testing"
     7  
     8  	"github.com/ncw/rclone/fs"
     9  	"github.com/ncw/rclone/fs/config/obscure"
    10  	"github.com/ncw/rclone/fs/version"
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestInternalNoop(t *testing.T) {
    16  	call := Calls.Get("rc/noop")
    17  	assert.NotNil(t, call)
    18  	in := Params{
    19  		"String": "hello",
    20  		"Int":    42,
    21  	}
    22  	out, err := call.Fn(context.Background(), in)
    23  	require.NoError(t, err)
    24  	require.NotNil(t, out)
    25  	assert.Equal(t, in, out)
    26  }
    27  
    28  func TestInternalError(t *testing.T) {
    29  	call := Calls.Get("rc/error")
    30  	assert.NotNil(t, call)
    31  	in := Params{}
    32  	out, err := call.Fn(context.Background(), in)
    33  	require.Error(t, err)
    34  	require.Nil(t, out)
    35  }
    36  
    37  func TestInternalList(t *testing.T) {
    38  	call := Calls.Get("rc/list")
    39  	assert.NotNil(t, call)
    40  	in := Params{}
    41  	out, err := call.Fn(context.Background(), in)
    42  	require.NoError(t, err)
    43  	require.NotNil(t, out)
    44  	assert.Equal(t, Params{"commands": Calls.List()}, out)
    45  }
    46  
    47  func TestCorePid(t *testing.T) {
    48  	call := Calls.Get("core/pid")
    49  	assert.NotNil(t, call)
    50  	in := Params{}
    51  	out, err := call.Fn(context.Background(), in)
    52  	require.NoError(t, err)
    53  	require.NotNil(t, out)
    54  	pid := out["pid"]
    55  	assert.NotEqual(t, nil, pid)
    56  	_, ok := pid.(int)
    57  	assert.Equal(t, true, ok)
    58  }
    59  
    60  func TestCoreMemstats(t *testing.T) {
    61  	call := Calls.Get("core/memstats")
    62  	assert.NotNil(t, call)
    63  	in := Params{}
    64  	out, err := call.Fn(context.Background(), in)
    65  	require.NoError(t, err)
    66  	require.NotNil(t, out)
    67  	sys := out["Sys"]
    68  	assert.NotEqual(t, nil, sys)
    69  	_, ok := sys.(uint64)
    70  	assert.Equal(t, true, ok)
    71  }
    72  
    73  func TestCoreGC(t *testing.T) {
    74  	call := Calls.Get("core/gc")
    75  	assert.NotNil(t, call)
    76  	in := Params{}
    77  	out, err := call.Fn(context.Background(), in)
    78  	require.NoError(t, err)
    79  	require.Nil(t, out)
    80  	assert.Equal(t, Params(nil), out)
    81  }
    82  
    83  func TestCoreVersion(t *testing.T) {
    84  	call := Calls.Get("core/version")
    85  	assert.NotNil(t, call)
    86  	in := Params{}
    87  	out, err := call.Fn(context.Background(), in)
    88  	require.NoError(t, err)
    89  	require.NotNil(t, out)
    90  	assert.Equal(t, fs.Version, out["version"])
    91  	assert.Equal(t, runtime.GOOS, out["os"])
    92  	assert.Equal(t, runtime.GOARCH, out["arch"])
    93  	assert.Equal(t, runtime.Version(), out["goVersion"])
    94  	_ = out["isGit"].(bool)
    95  	v := out["decomposed"].(version.Version)
    96  	assert.True(t, len(v) >= 2)
    97  }
    98  
    99  func TestCoreObscure(t *testing.T) {
   100  	call := Calls.Get("core/obscure")
   101  	assert.NotNil(t, call)
   102  	in := Params{
   103  		"clear": "potato",
   104  	}
   105  	out, err := call.Fn(context.Background(), in)
   106  	require.NoError(t, err)
   107  	require.NotNil(t, out)
   108  	assert.Equal(t, in["clear"], obscure.MustReveal(out["obscured"].(string)))
   109  }