github.com/ncw/rclone@v1.48.1-0.20190724201158-a35aa1360e3e/fs/config/rc_test.go (about) 1 package config 2 3 import ( 4 "context" 5 "testing" 6 7 _ "github.com/ncw/rclone/backend/local" 8 "github.com/ncw/rclone/fs" 9 "github.com/ncw/rclone/fs/config/obscure" 10 "github.com/ncw/rclone/fs/rc" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 const testName = "configTestNameForRc" 16 17 func TestRc(t *testing.T) { 18 // Create the test remote 19 call := rc.Calls.Get("config/create") 20 assert.NotNil(t, call) 21 in := rc.Params{ 22 "name": testName, 23 "type": "local", 24 "parameters": rc.Params{ 25 "test_key": "sausage", 26 }, 27 } 28 out, err := call.Fn(context.Background(), in) 29 require.NoError(t, err) 30 require.Nil(t, out) 31 assert.Equal(t, "local", FileGet(testName, "type")) 32 assert.Equal(t, "sausage", FileGet(testName, "test_key")) 33 34 // The sub tests rely on the remote created above but they can 35 // all be run independently 36 37 t.Run("Dump", func(t *testing.T) { 38 call := rc.Calls.Get("config/dump") 39 assert.NotNil(t, call) 40 in := rc.Params{} 41 out, err := call.Fn(context.Background(), in) 42 require.NoError(t, err) 43 require.NotNil(t, out) 44 45 require.NotNil(t, out[testName]) 46 config := out[testName].(rc.Params) 47 48 assert.Equal(t, "local", config["type"]) 49 assert.Equal(t, "sausage", config["test_key"]) 50 }) 51 52 t.Run("Get", func(t *testing.T) { 53 call := rc.Calls.Get("config/get") 54 assert.NotNil(t, call) 55 in := rc.Params{ 56 "name": testName, 57 } 58 out, err := call.Fn(context.Background(), in) 59 require.NoError(t, err) 60 require.NotNil(t, out) 61 62 assert.Equal(t, "local", out["type"]) 63 assert.Equal(t, "sausage", out["test_key"]) 64 }) 65 66 t.Run("ListRemotes", func(t *testing.T) { 67 call := rc.Calls.Get("config/listremotes") 68 assert.NotNil(t, call) 69 in := rc.Params{} 70 out, err := call.Fn(context.Background(), in) 71 require.NoError(t, err) 72 require.NotNil(t, out) 73 74 var remotes []string 75 err = out.GetStruct("remotes", &remotes) 76 require.NoError(t, err) 77 78 assert.Contains(t, remotes, testName) 79 }) 80 81 t.Run("Update", func(t *testing.T) { 82 call := rc.Calls.Get("config/update") 83 assert.NotNil(t, call) 84 in := rc.Params{ 85 "name": testName, 86 "parameters": rc.Params{ 87 "test_key": "rutabaga", 88 "test_key2": "cabbage", 89 }, 90 } 91 out, err := call.Fn(context.Background(), in) 92 require.NoError(t, err) 93 assert.Nil(t, out) 94 95 assert.Equal(t, "local", FileGet(testName, "type")) 96 assert.Equal(t, "rutabaga", FileGet(testName, "test_key")) 97 assert.Equal(t, "cabbage", FileGet(testName, "test_key2")) 98 }) 99 100 t.Run("Password", func(t *testing.T) { 101 call := rc.Calls.Get("config/password") 102 assert.NotNil(t, call) 103 in := rc.Params{ 104 "name": testName, 105 "parameters": rc.Params{ 106 "test_key": "rutabaga", 107 "test_key2": "cabbage", 108 }, 109 } 110 out, err := call.Fn(context.Background(), in) 111 require.NoError(t, err) 112 assert.Nil(t, out) 113 114 assert.Equal(t, "local", FileGet(testName, "type")) 115 assert.Equal(t, "rutabaga", obscure.MustReveal(FileGet(testName, "test_key"))) 116 assert.Equal(t, "cabbage", obscure.MustReveal(FileGet(testName, "test_key2"))) 117 }) 118 119 // Delete the test remote 120 call = rc.Calls.Get("config/delete") 121 assert.NotNil(t, call) 122 in = rc.Params{ 123 "name": testName, 124 } 125 out, err = call.Fn(context.Background(), in) 126 require.NoError(t, err) 127 assert.Nil(t, out) 128 assert.Equal(t, "", FileGet(testName, "type")) 129 assert.Equal(t, "", FileGet(testName, "test_key")) 130 } 131 132 func TestRcProviders(t *testing.T) { 133 call := rc.Calls.Get("config/providers") 134 assert.NotNil(t, call) 135 in := rc.Params{} 136 out, err := call.Fn(context.Background(), in) 137 require.NoError(t, err) 138 require.NotNil(t, out) 139 var registry []*fs.RegInfo 140 err = out.GetStruct("providers", ®istry) 141 require.NoError(t, err) 142 foundLocal := false 143 for _, provider := range registry { 144 if provider.Name == "local" { 145 foundLocal = true 146 break 147 } 148 } 149 assert.True(t, foundLocal, "didn't find local provider") 150 }