You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pointer_test.go 4.0KB

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