repo_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package database
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/stretchr/testify/require"
  8. "gogs.io/gogs/internal/markup"
  9. "gogs.io/gogs/internal/osutil"
  10. )
  11. func TestRepository_ComposeMetas(t *testing.T) {
  12. repo := &Repository{
  13. Name: "testrepo",
  14. Owner: &User{
  15. Name: "testuser",
  16. },
  17. ExternalTrackerFormat: "https://someurl.com/{user}/{repo}/{issue}",
  18. }
  19. t.Run("no external tracker is configured", func(t *testing.T) {
  20. repo.EnableExternalTracker = false
  21. metas := repo.ComposeMetas()
  22. assert.Equal(t, metas["repoLink"], repo.Link())
  23. // Should not have format and style if no external tracker is configured
  24. _, ok := metas["format"]
  25. assert.False(t, ok)
  26. _, ok = metas["style"]
  27. assert.False(t, ok)
  28. })
  29. t.Run("an external issue tracker is configured", func(t *testing.T) {
  30. repo.ExternalMetas = nil
  31. repo.EnableExternalTracker = true
  32. // Default to numeric issue style
  33. assert.Equal(t, markup.IssueNameStyleNumeric, repo.ComposeMetas()["style"])
  34. repo.ExternalMetas = nil
  35. repo.ExternalTrackerStyle = markup.IssueNameStyleNumeric
  36. assert.Equal(t, markup.IssueNameStyleNumeric, repo.ComposeMetas()["style"])
  37. repo.ExternalMetas = nil
  38. repo.ExternalTrackerStyle = markup.IssueNameStyleAlphanumeric
  39. assert.Equal(t, markup.IssueNameStyleAlphanumeric, repo.ComposeMetas()["style"])
  40. repo.ExternalMetas = nil
  41. metas := repo.ComposeMetas()
  42. assert.Equal(t, "testuser", metas["user"])
  43. assert.Equal(t, "testrepo", metas["repo"])
  44. assert.Equal(t, "https://someurl.com/{user}/{repo}/{issue}", metas["format"])
  45. })
  46. }
  47. func Test_CreateRepository_PreventDeletion(t *testing.T) {
  48. owner := &User{Name: "testuser"}
  49. opts := CreateRepoOptionsLegacy{Name: "safety-test"}
  50. repoPath := RepoPath(owner.Name, opts.Name)
  51. require.NoError(t, os.MkdirAll(repoPath, os.ModePerm))
  52. canary := filepath.Join(repoPath, "canary.txt")
  53. require.NoError(t, os.WriteFile(canary, []byte("should survive"), 0o644))
  54. _, err := CreateRepository(owner, owner, opts)
  55. require.Error(t, err)
  56. assert.Contains(t, err.Error(), "repository directory already exists")
  57. assert.True(t, osutil.Exist(canary))
  58. }