mirror of
				https://github.com/mickael-kerjean/filestash.git
				synced 2025-11-01 02:43:35 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package model
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 	. "github.com/mickael-kerjean/filestash/server/common"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| var shareObj = Share{
 | |
| 	Backend: "foo",
 | |
| 	Id: "foo",
 | |
| 	Path: "/var/www/",
 | |
| 	Password: NewString("password"),
 | |
| 	Users: nil,
 | |
| 	CanRead: true,
 | |
| 	CanManageOwn: true,
 | |
| 	CanShare: true,
 | |
| 	Expire: func() *int64{
 | |
| 		a := int64(1537759505787)
 | |
| 		return &a
 | |
| 	}(),
 | |
| }
 | |
| 
 | |
| 
 | |
| //////////////////////////////////////////////
 | |
| //// UPSERT
 | |
| 
 | |
| func TestShareSimpleUpsert(t *testing.T) {
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err)
 | |
| }
 | |
| 
 | |
| func TestShareMultipleUpsert(t *testing.T) {
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	err = ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	_, err = ShareGet(shareObj.Id)
 | |
| 	assert.NoError(t, err)
 | |
| }
 | |
| 
 | |
| func TestShareUpsertIsProperlyInserted(t *testing.T) {
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	var obj Share
 | |
| 	obj.Id = "foo"
 | |
| 	obj, err = ShareGet(obj.Id)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.NotNil(t, obj.Password)
 | |
| }
 | |
| 
 | |
| //////////////////////////////////////////////
 | |
| //// get
 | |
| 
 | |
| func TestShareGetNonExisting(t *testing.T) {
 | |
| 	var s Share = shareObj
 | |
| 	s.Id = "nothing"
 | |
| 	_, err := ShareGet(s.Id);
 | |
| 	assert.Error(t, err, "Shouldn't be able to get something that doesn't exist yet")
 | |
| }
 | |
| 
 | |
| func TestShareGetExisting(t *testing.T) {
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err, "Upsert issue")
 | |
| 
 | |
| 	_, err = ShareGet(shareObj.Id);
 | |
| 	assert.NoError(t, err)
 | |
| }
 | |
| 
 | |
| func TestShareGetExistingMakeSureDataIsOk(t *testing.T) {
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err, "Upsert issue")
 | |
| 
 | |
| 	var obj Share
 | |
| 	obj.Id = "foo"
 | |
| 	obj.Backend = shareObj.Backend
 | |
| 	obj, err = ShareGet(obj.Id);
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Equal(t, "foo", obj.Id)
 | |
| 	assert.Equal(t, "/var/www/", obj.Path)
 | |
| 	assert.Equal(t, true, obj.CanManageOwn)
 | |
| 	assert.Equal(t, true, obj.CanShare)
 | |
| 	assert.Equal(t, true, obj.CanRead)
 | |
| 	assert.Equal(t, false, obj.CanWrite)
 | |
| 	assert.Equal(t, false, obj.CanUpload)
 | |
| 	assert.Equal(t, "foo", obj.Backend)
 | |
| 	assert.Equal(t, shareObj.Expire, obj.Expire)
 | |
| }
 | |
| 
 | |
| //////////////////////////////////////////////
 | |
| //// LIST
 | |
| 
 | |
| func TestShareListAll(t *testing.T) {
 | |
| 	// Initialise test
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err, "Upsert issue")
 | |
| 
 | |
| 	// Actual test
 | |
| 	list, err := ShareList(shareObj.Backend, shareObj.Path)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Len(t, list, 1)
 | |
| 	assert.NotNil(t, list[0].Password)
 | |
| }
 | |
| 
 | |
| 
 | |
| //////////////////////////////////////////////
 | |
| //// DELETE
 | |
| 
 | |
| func TestShareDeleteShares(t *testing.T) {
 | |
| 	// Initialise test
 | |
| 	err := ShareUpsert(&shareObj);
 | |
| 	assert.NoError(t, err, "Upsert issue")
 | |
| 	shareObj, err = ShareGet(shareObj.Id)
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	// Actual Test
 | |
| 	err = ShareDelete(shareObj.Id);
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	_, err = ShareGet(shareObj.Id)
 | |
| 	assert.Error(t, err)
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| //////////////////////////////////////////////
 | |
| //// PROOF
 | |
| 
 | |
| func TestShareVerifyEquivalence(t *testing.T) {
 | |
| 	p1 := Proof {
 | |
| 		Key: "password",
 | |
| 		Value: "I'm something random",
 | |
| 	}
 | |
| 	p2 := Proof {
 | |
| 		Key: p1.Key,
 | |
| 		Id: "hash",
 | |
| 	}
 | |
| 	res := shareProofAreEquivalent(p1, p2)
 | |
| 	assert.Equal(t, false, res)
 | |
| 
 | |
| 	p2.Id = Hash(p1.Key + "::" + p1.Value)
 | |
| 	res = shareProofAreEquivalent(p1, p2)
 | |
| 	assert.Equal(t, true, res)
 | |
| 
 | |
| 	p2.Key = "email"
 | |
| 	res = shareProofAreEquivalent(p1, p2)
 | |
| 	assert.Equal(t, false, res)
 | |
| 
 | |
| 	p1.Key = "email"
 | |
| 	p1.Value = "test@gmail.com,polo@gmail.com,jean@gmail.com"
 | |
| 	p2.Key = "email"
 | |
| 	p2.Id = Hash(p1.Key + "::" + "polo@gmail.com")
 | |
| 	res = shareProofAreEquivalent(p1, p2)
 | |
| 	assert.Equal(t, true, res)
 | |
| 	
 | |
| }
 | 
