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 }