1package tq 2 3import ( 4 "testing" 5 6 "github.com/git-lfs/git-lfs/v3/lfsapi" 7 "github.com/git-lfs/git-lfs/v3/lfshttp" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10) 11 12type testAdapter struct { 13 name string 14 dir Direction 15} 16 17func (a *testAdapter) Name() string { 18 return a.name 19} 20 21func (a *testAdapter) Direction() Direction { 22 return a.dir 23} 24 25func (a *testAdapter) Begin(cfg AdapterConfig, cb ProgressCallback) error { 26 return nil 27} 28 29func (a *testAdapter) Add(ts ...*Transfer) (retries <-chan TransferResult) { 30 return nil 31} 32 33func (a *testAdapter) End() { 34} 35 36func newTestAdapter(name string, dir Direction) Adapter { 37 return &testAdapter{name, dir} 38} 39 40func newRenamedTestAdapter(name string, dir Direction) Adapter { 41 return &testAdapter{"RENAMED", dir} 42} 43 44func testBasicAdapterExists(t *testing.T) { 45 m := NewManifest(nil, nil, "", "") 46 47 assert := assert.New(t) 48 49 dls := m.GetDownloadAdapterNames() 50 if assert.NotNil(dls) { 51 assert.Equal([]string{"basic"}, dls) 52 } 53 uls := m.GetUploadAdapterNames() 54 if assert.NotNil(uls) { 55 assert.Equal([]string{"basic"}, uls) 56 } 57 58 da := m.NewDownloadAdapter("basic") 59 if assert.NotNil(da) { 60 assert.Equal("basic", da.Name()) 61 assert.Equal(Download, da.Direction()) 62 } 63 64 ua := m.NewUploadAdapter("basic") 65 if assert.NotNil(ua) { 66 assert.Equal("basic", ua.Name()) 67 assert.Equal(Upload, ua.Direction()) 68 } 69} 70 71func testAdapterRegAndOverride(t *testing.T) { 72 m := NewManifest(nil, nil, "", "") 73 assert := assert.New(t) 74 75 assert.Nil(m.NewDownloadAdapter("test")) 76 assert.Nil(m.NewUploadAdapter("test")) 77 78 m.RegisterNewAdapterFunc("test", Upload, newTestAdapter) 79 assert.Nil(m.NewDownloadAdapter("test")) 80 assert.NotNil(m.NewUploadAdapter("test")) 81 82 m.RegisterNewAdapterFunc("test", Download, newTestAdapter) 83 da := m.NewDownloadAdapter("test") 84 if assert.NotNil(da) { 85 assert.Equal("test", da.Name()) 86 assert.Equal(Download, da.Direction()) 87 } 88 89 ua := m.NewUploadAdapter("test") 90 if assert.NotNil(ua) { 91 assert.Equal("test", ua.Name()) 92 assert.Equal(Upload, ua.Direction()) 93 } 94 95 // Test override 96 m.RegisterNewAdapterFunc("test", Upload, newRenamedTestAdapter) 97 ua = m.NewUploadAdapter("test") 98 if assert.NotNil(ua) { 99 assert.Equal("RENAMED", ua.Name()) 100 assert.Equal(Upload, ua.Direction()) 101 } 102 103 da = m.NewDownloadAdapter("test") 104 if assert.NotNil(da) { 105 assert.Equal("test", da.Name()) 106 assert.Equal(Download, da.Direction()) 107 } 108 109 m.RegisterNewAdapterFunc("test", Download, newRenamedTestAdapter) 110 da = m.NewDownloadAdapter("test") 111 if assert.NotNil(da) { 112 assert.Equal("RENAMED", da.Name()) 113 assert.Equal(Download, da.Direction()) 114 } 115} 116 117func testAdapterRegButBasicOnly(t *testing.T) { 118 cli, err := lfsapi.NewClient(lfshttp.NewContext(nil, nil, map[string]string{ 119 "lfs.basictransfersonly": "yes", 120 })) 121 require.Nil(t, err) 122 123 m := NewManifest(nil, cli, "", "") 124 125 assert := assert.New(t) 126 127 m.RegisterNewAdapterFunc("test", Upload, newTestAdapter) 128 m.RegisterNewAdapterFunc("test", Download, newTestAdapter) 129 // Will still be created if we ask for them 130 assert.NotNil(m.NewUploadAdapter("test")) 131 assert.NotNil(m.NewDownloadAdapter("test")) 132 133 // But list will exclude 134 ld := m.GetDownloadAdapterNames() 135 assert.Equal([]string{BasicAdapterName}, ld) 136 lu := m.GetUploadAdapterNames() 137 assert.Equal([]string{BasicAdapterName}, lu) 138} 139