mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-04-22 06:59:25 +00:00
- When looking for an existing blob, has_blake2b will be null when it was created prior to v26 migration in v11, when the field was introduced. - Add unit test and minimal refactoring to load fixtures. The AddFixture function should not be where it currently is because it cannot be used by some packages (circular import). But that's a refactor that needs to be elsewhere for backporting purposes. Fixes https://codeberg.org/forgejo/forgejo/issues/7519 Co-authored-by: Earl Warren <contact@earl-warren.org> Co-committed-by: Earl Warren <contact@earl-warren.org>
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
// Copyright 2025 The Forgejo Authors.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package packages
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"forgejo.org/models/unittest"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPackagesGetOrInsertBlob(t *testing.T) {
|
|
defer AddFixtures("models/fixtures/TestPackagesGetOrInsertBlob/")()
|
|
require.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
blake2bIsSet := unittest.AssertExistsAndLoadBean(t, &PackageBlob{ID: 1})
|
|
blake2bNotSet := unittest.AssertExistsAndLoadBean(t, &PackageBlob{ID: 2})
|
|
|
|
var blake2bSetToRandom PackageBlob
|
|
blake2bSetToRandom = *blake2bNotSet
|
|
blake2bSetToRandom.HashBlake2b = "SOMETHING RANDOM"
|
|
|
|
for _, testCase := range []struct {
|
|
name string
|
|
exists bool
|
|
packageBlob *PackageBlob
|
|
}{
|
|
{
|
|
name: "exists and blake2b is not null in the database",
|
|
exists: true,
|
|
packageBlob: blake2bIsSet,
|
|
},
|
|
{
|
|
name: "exists and blake2b is null in the database",
|
|
exists: true,
|
|
packageBlob: &blake2bSetToRandom,
|
|
},
|
|
{
|
|
name: "does not exists",
|
|
exists: false,
|
|
packageBlob: &PackageBlob{
|
|
Size: 30,
|
|
HashMD5: "HASHMD5_3",
|
|
HashSHA1: "HASHSHA1_3",
|
|
HashSHA256: "HASHSHA256_3",
|
|
HashSHA512: "HASHSHA512_3",
|
|
HashBlake2b: "HASHBLAKE2B_3",
|
|
},
|
|
},
|
|
} {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
found, has, _ := GetOrInsertBlob(t.Context(), testCase.packageBlob)
|
|
assert.Equal(t, testCase.exists, has)
|
|
require.NotNil(t, found)
|
|
if testCase.exists {
|
|
assert.Equal(t, found.ID, testCase.packageBlob.ID)
|
|
} else {
|
|
unittest.BeanExists(t, &PackageBlob{ID: found.ID})
|
|
}
|
|
})
|
|
}
|
|
}
|