github.com/xhghs/rclone@v1.51.1-0.20200430155106-e186a28cced8/fs/rc/internal_test.go (about)

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