github.com/hawser/git-hawser@v2.5.2+incompatible/tq/transfer_test.go (about)

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