code.gitea.io/gitea@v1.19.3/modules/lfs/pointer_test.go (about)

     1  // Copyright 2021 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package lfs
     5  
     6  import (
     7  	"path"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestStringContent(t *testing.T) {
    15  	p := Pointer{Oid: "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", Size: 1234}
    16  	expected := "version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize 1234\n"
    17  	assert.Equal(t, expected, p.StringContent())
    18  }
    19  
    20  func TestRelativePath(t *testing.T) {
    21  	p := Pointer{Oid: "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393"}
    22  	expected := path.Join("4d", "7a", "214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393")
    23  	assert.Equal(t, expected, p.RelativePath())
    24  
    25  	p2 := Pointer{Oid: "4d7a"}
    26  	assert.Equal(t, "4d7a", p2.RelativePath())
    27  }
    28  
    29  func TestIsValid(t *testing.T) {
    30  	p := Pointer{}
    31  	assert.False(t, p.IsValid())
    32  
    33  	p = Pointer{Oid: "123"}
    34  	assert.False(t, p.IsValid())
    35  
    36  	p = Pointer{Oid: "z4cb57646c54a297c9807697e80a30946f79a4b82cb079d2606847825b1812cc"}
    37  	assert.False(t, p.IsValid())
    38  
    39  	p = Pointer{Oid: "94cb57646c54a297c9807697e80a30946f79a4b82cb079d2606847825b1812cc"}
    40  	assert.True(t, p.IsValid())
    41  
    42  	p = Pointer{Oid: "94cb57646c54a297c9807697e80a30946f79a4b82cb079d2606847825b1812cc", Size: -1}
    43  	assert.False(t, p.IsValid())
    44  }
    45  
    46  func TestGeneratePointer(t *testing.T) {
    47  	p, err := GeneratePointer(strings.NewReader("Gitea"))
    48  	assert.NoError(t, err)
    49  	assert.True(t, p.IsValid())
    50  	assert.Equal(t, "94cb57646c54a297c9807697e80a30946f79a4b82cb079d2606847825b1812cc", p.Oid)
    51  	assert.Equal(t, int64(5), p.Size)
    52  }
    53  
    54  func TestReadPointerFromBuffer(t *testing.T) {
    55  	p, err := ReadPointerFromBuffer([]byte{})
    56  	assert.ErrorIs(t, err, ErrMissingPrefix)
    57  	assert.False(t, p.IsValid())
    58  
    59  	p, err = ReadPointerFromBuffer([]byte("test"))
    60  	assert.ErrorIs(t, err, ErrMissingPrefix)
    61  	assert.False(t, p.IsValid())
    62  
    63  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\n"))
    64  	assert.ErrorIs(t, err, ErrInvalidStructure)
    65  	assert.False(t, p.IsValid())
    66  
    67  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a\nsize 1234\n"))
    68  	assert.ErrorIs(t, err, ErrInvalidOIDFormat)
    69  	assert.False(t, p.IsValid())
    70  
    71  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a2146z4ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize 1234\n"))
    72  	assert.ErrorIs(t, err, ErrInvalidOIDFormat)
    73  	assert.False(t, p.IsValid())
    74  
    75  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\ntest 1234\n"))
    76  	assert.Error(t, err)
    77  	assert.False(t, p.IsValid())
    78  
    79  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize test\n"))
    80  	assert.Error(t, err)
    81  	assert.False(t, p.IsValid())
    82  
    83  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize 1234\n"))
    84  	assert.NoError(t, err)
    85  	assert.True(t, p.IsValid())
    86  	assert.Equal(t, "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", p.Oid)
    87  	assert.Equal(t, int64(1234), p.Size)
    88  
    89  	p, err = ReadPointerFromBuffer([]byte("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize 1234\ntest"))
    90  	assert.NoError(t, err)
    91  	assert.True(t, p.IsValid())
    92  	assert.Equal(t, "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", p.Oid)
    93  	assert.Equal(t, int64(1234), p.Size)
    94  }
    95  
    96  func TestReadPointer(t *testing.T) {
    97  	p, err := ReadPointer(strings.NewReader("version https://git-lfs.github.com/spec/v1\noid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393\nsize 1234\n"))
    98  	assert.NoError(t, err)
    99  	assert.True(t, p.IsValid())
   100  	assert.Equal(t, "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", p.Oid)
   101  	assert.Equal(t, int64(1234), p.Size)
   102  }