TestGetGitHubRelease tests the GetGitHubRelease function with various scenarios.
(t *testing.T)
| 9 | |
| 10 | // TestGetGitHubRelease tests the GetGitHubRelease function with various scenarios. |
| 11 | func TestGetGitHubRelease(t *testing.T) { |
| 12 | if !github.HasGitHubToken() { |
| 13 | t.Skip("Skipping because DDEV_GITHUB_TOKEN is not set") |
| 14 | } |
| 15 | |
| 16 | // Test getting latest release |
| 17 | t.Run("GetLatestRelease", func(t *testing.T) { |
| 18 | tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis", "") |
| 19 | require.NoError(t, err, "Should successfully get latest release") |
| 20 | require.NotEmpty(t, tarballURL, "Tarball URL should not be empty") |
| 21 | require.NotEmpty(t, version, "Version should not be empty") |
| 22 | require.Contains(t, tarballURL, "github.com", "Tarball URL should be from GitHub") |
| 23 | }) |
| 24 | |
| 25 | // Test getting specific version |
| 26 | t.Run("GetSpecificVersion", func(t *testing.T) { |
| 27 | tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis", "v1.0.4") |
| 28 | require.NoError(t, err, "Should successfully get specific version") |
| 29 | require.Equal(t, "v1.0.4", version, "Should return requested version") |
| 30 | require.NotEmpty(t, tarballURL, "Tarball URL should not be empty") |
| 31 | }) |
| 32 | |
| 33 | // Test non-existent repository |
| 34 | t.Run("NonExistentRepo", func(t *testing.T) { |
| 35 | _, _, err := github.GetGitHubRelease("ddev", "non-existent-repo", "") |
| 36 | require.Error(t, err, "Should fail for non-existent repository") |
| 37 | require.Contains(t, err.Error(), "unable to get releases", "Error should mention inability to get releases") |
| 38 | }) |
| 39 | |
| 40 | // Test non-existent version |
| 41 | t.Run("NonExistentVersion", func(t *testing.T) { |
| 42 | _, _, err := github.GetGitHubRelease("ddev", "ddev-redis", "v999.999.999") |
| 43 | require.Error(t, err, "Should fail for non-existent version") |
| 44 | require.Contains(t, err.Error(), "no release found", "Error should mention no release found") |
| 45 | }) |
| 46 | |
| 47 | // Test real addon with dependencies |
| 48 | t.Run("RealAddonWithDependencies", func(t *testing.T) { |
| 49 | // Test ddev-redis-insight which depends on ddev-redis |
| 50 | tarballURL, version, err := github.GetGitHubRelease("ddev", "ddev-redis-insight", "") |
| 51 | require.NoError(t, err, "Should successfully get ddev-redis-insight release") |
| 52 | require.NotEmpty(t, tarballURL, "Tarball URL should not be empty") |
| 53 | require.NotEmpty(t, version, "Version should not be empty") |
| 54 | require.Contains(t, tarballURL, "github.com", "Tarball URL should be from GitHub") |
| 55 | }) |
| 56 | } |
| 57 | |
| 58 | // TestGetGitHubToken tests the GetGitHubToken function environment variable precedence. |
| 59 | func TestGetGitHubToken(t *testing.T) { |
nothing calls this directly
no test coverage detected