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 }