Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e7ab6f3
Add Docker curation support
basel1322 Dec 10, 2025
a7b6843
Improved Docker curation to use docker pull and add Accept headers fo…
basel1322 Dec 10, 2025
a814b8d
Simplify Docker curation code
basel1322 Dec 10, 2025
57396a7
Merge branch 'dev' into docker-curation-supprot
basel1322 Dec 14, 2025
ac16c65
Fixed unit test for Docker curation
basel1322 Dec 14, 2025
3171ad9
improved the code
basel1322 Dec 16, 2025
ecd4a99
fixed unit test commit
basel1322 Dec 16, 2025
4c0adc9
added get version for docker
basel1322 Dec 16, 2025
958ee03
Add Docker curation audit integration test
basel1322 Dec 18, 2025
b22d8cf
Add Docker login in test and fix panic on parse error
basel1322 Dec 18, 2025
d1a5492
Use same test setup pattern as Docker scan tests
basel1322 Dec 18, 2025
cb6f4e5
Use anonymous Docker access for curation test
basel1322 Dec 18, 2025
2e5ad3d
Skip Docker curation test on macOS CI
basel1322 Dec 18, 2025
59a3a7e
Update commands/curation/curationaudit.go
basel1322 Dec 18, 2025
490440d
Update curationaudit.go
basel1322 Dec 18, 2025
06c852a
Update commands/curation/curationaudit.go
basel1322 Dec 21, 2025
5337c9c
Refactor Docker image parsing and remove redundant checkDockerSupport
basel1322 Dec 21, 2025
5f568e8
Fix unparam lint issue
basel1322 Dec 21, 2025
97100eb
feat: get arch-specific digest for successful docker pulls using buildx
basel1322 Dec 22, 2025
207e9b1
fix: fixed typo in buildx inspect debug logs
basel1322 Dec 22, 2025
fe4c435
fix: show actual error message for docker buildx imagetools inspect f…
basel1322 Dec 22, 2025
ae9c166
fix: properly return error from docker buildx imagetools inspect
basel1322 Dec 22, 2025
32bc73c
improved the code
basel1322 Dec 29, 2025
33ee5b1
improved text
basel1322 Dec 29, 2025
4487529
improved the code
basel1322 Dec 30, 2025
8e02730
Clarify Docker image name flag description
basel1322 Dec 30, 2025
3370714
Fix formatting of error message for repository check
basel1322 Dec 30, 2025
ff53b41
Merge branch 'dev' into docker-curation-supprot
basel1322 Dec 30, 2025
60561ec
Fix linter errors: return proper error, lowercase error strings
basel1322 Dec 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add Docker curation audit integration test
  • Loading branch information
basel1322 committed Dec 18, 2025
commit 958ee030d22afa9548e4d2943ff1d20827c1c867
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,10 @@ jobs:
- name: Install and Setup Dependencies
uses: ./.github/actions/install-and-setup

- name: Docker Login
if: runner.os == 'Linux'
run: echo "${{ secrets.PLATFORM_ADMIN_TOKEN }}" | docker login ${{ secrets.CONTAINER_REGISTRY }} -u admin --password-stdin

# Test
- name: Run tests
run: go test ${{ env.GO_COMMON_TEST_ARGS }} --test.curation --test.enrich --ci.runId=${{ runner.os }}-sec-test
Expand Down
48 changes: 48 additions & 0 deletions curation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/jfrog/jfrog-cli-security/cli"
"github.com/jfrog/jfrog-cli-security/commands/curation"
securityTests "github.com/jfrog/jfrog-cli-security/tests"
securityTestUtils "github.com/jfrog/jfrog-cli-security/tests/utils"
Expand Down Expand Up @@ -105,6 +106,53 @@ func getCurationExpectedResponse(config *config.ServerDetails) []curation.Packag
return expectedResp
}

func TestDockerCurationAudit(t *testing.T) {
integration.InitCurationTest(t)
if securityTests.ContainerRegistry == nil || *securityTests.ContainerRegistry == "" {
t.Skip("Skipping Docker curation test - container registry not configured")
}

cleanUpJfrogHome, err := coreTests.SetJfrogHome()
assert.NoError(t, err)
defer cleanUpJfrogHome()

serverDetails := &config.ServerDetails{
ServerId: "default",
Url: *securityTests.JfrogUrl,
ArtifactoryUrl: *securityTests.JfrogUrl + securityTests.ArtifactoryEndpoint,
XrayUrl: *securityTests.JfrogUrl + securityTests.XrayEndpoint,
AccessToken: *securityTests.JfrogAccessToken,
}
configCmd := commonCommands.NewConfigCommand(commonCommands.AddOrEdit, serverDetails.ServerId).
SetDetails(serverDetails).
SetInteractive(false)
assert.NoError(t, configCmd.Run())

testCli := integration.GetXrayTestCli(cli.GetJfrogCliSecurityApp(), false)

testImage := fmt.Sprintf("%s/%s/%s", *securityTests.ContainerRegistry, "docker-curation", "ganodndentcom/drupal")

output := testCli.WithoutCredentials().RunCliCmdWithOutput(t, "curation-audit",
"--image="+testImage,
"--format="+string(format.Json))

if strings.Contains(output, "docker.sock") || strings.Contains(output, "docker daemon") {
t.Skip("Skipping Docker curation test - Docker is not running")
}

var results []curation.PackageStatus
bracketIndex := strings.Index(output, "[")
err = json.Unmarshal([]byte(output[bracketIndex:]), &results)
require.NoError(t, err)

require.NotEmpty(t, results, "Expected at least one blocked package")
assert.Equal(t, "blocked", results[0].Action)
assert.Equal(t, "ganodndentcom/drupal", results[0].PackageName)
assert.Equal(t, curation.BlockingReasonPolicy, results[0].BlockingReason)
require.NotEmpty(t, results[0].Policy, "Expected at least one policy violation")
assert.Equal(t, "Malicious package", results[0].Policy[0].Condition)
}

func curationServer(t *testing.T, expectedRequest map[string]bool, requestToFail map[string]bool) (*httptest.Server, *config.ServerDetails) {
mapLockReadWrite := sync.Mutex{}
serverMock, config, _ := commonTests.CreateRtRestsMockServer(t, func(w http.ResponseWriter, r *http.Request) {
Expand Down
Loading