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 }