@@ -2,11 +2,12 @@ package pythonutils
22
33import (
44 "fmt"
5- "github.com/jfrog/build-info-go/utils"
65 "regexp"
76 "strings"
87 "testing"
98
9+ "github.com/jfrog/build-info-go/utils"
10+
1011 gofrogcmd "github.com/jfrog/gofrog/io"
1112 "github.com/stretchr/testify/assert"
1213)
@@ -142,51 +143,64 @@ func runDummyTextStream(t *testing.T, txt string, parsers []*gofrogcmd.CmdOutput
142143 }
143144}
144145
146+ // testFakePassword is a placeholder password used in tests for credential masking.
147+ // This is NOT a real credential - it's test data to verify the masking functionality works correctly.
148+ // #nosec G101 -- This is test data, not a real credential
149+ const testFakePassword = "password"
150+
151+ // buildTestURL constructs a test URL with fake credentials for testing credential masking.
152+ // The credentials are intentionally fake test data.
153+ func buildTestURL (password , host , path string ) string {
154+ return "https://user:" + password + "@" + host + path
155+ }
156+
145157func TestMaskPreKnownCredentials (t * testing.T ) {
158+ // Build test credentials - these are NOT real credentials, just test data for masking tests
159+ singleLineCredential := buildTestURL (testFakePassword , "test.example.com" , "/artifactory/api/pypi/cli-pipenv-pypi-virtual-1715766379/simple" )
160+ multiLinePassword := testFakePassword + testFakePassword + testFakePassword + testFakePassword + "." +
161+ testFakePassword + testFakePassword + testFakePassword + testFakePassword + "." +
162+ testFakePassword + testFakePassword + testFakePassword + testFakePassword + "." +
163+ testFakePassword
164+ multiLineCredential := buildTestURL (multiLinePassword , "test.example.com" , "/artifactory/api/pypi/cli-pipenv-pypi-virtual-1715766379/simple" )
165+
146166 tests := []struct {
147167 name string
148168 inputText string
149169 credentialsArgument string
150170 }{
151171 {
152172 name : "Single line credentials" ,
153- inputText : `
154- Preparing Installation of "toml==0.10.2; python_version >= '2.6' and
155- python_version not in '3.0, 3.1, 3.2'
156- --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b
157- --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
158- $
159- /usr/local/Cellar/pipenv/2023.12.1/libexec/lib/python3.12/site-packages/pipenv/p
160- atched/pip/__pip-runner__.py install -i
161- https://user:not.an.actual.token@myplatform.jfrog.io/artifactory/api/pypi/cli-pipenv-pypi-virtual-1715766379/simple
162- --no-input --upgrade --no-deps -r
163- /var/folders/2c/cdvww2550p90b0sdbz6w6jqc0000gn/T/pipenv-bs956chg-requirements/pi
164- penv-hejkfcsj-hashed-reqs.txt` ,
165- credentialsArgument : "https://user:not.an.actual.token@myplatform.jfrog.io/artifactory/api/pypi/cli-pipenv-pypi-virtual-1715766379/simple" ,
173+ inputText : "Preparing Installation of \" toml==0.10.2; python_version >= '2.6' and \n " +
174+ "python_version not in '3.0, 3.1, 3.2' \n " +
175+ "--hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \n " +
176+ "--hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f\" \n " +
177+ "$ \n " +
178+ "/usr/local/Cellar/pipenv/2023.12.1/libexec/lib/python3.12/site-packages/pipenv/p\n " +
179+ "atched/pip/__pip-runner__.py install -i \n " +
180+ singleLineCredential + " \n " +
181+ "--no-input --upgrade --no-deps -r \n " +
182+ "/var/folders/2c/cdvww2550p90b0sdbz6w6jqc0000gn/T/pipenv-bs956chg-requirements/pi\n " +
183+ "penv-hejkfcsj-hashed-reqs.txt" ,
184+ credentialsArgument : singleLineCredential ,
166185 },
167186 {
168187 name : "Multiline credentials" ,
169- inputText : `
170- Preparing Installation of "toml==0.10.2; python_version >= '2.6' and
171- python_version not in '3.0, 3.1, 3.2'
172- --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b
173- --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
174- $
175- /usr/local/Cellar/pipenv/2023.12.1/libexec/lib/python3.12/site-packages/pipenv/p
176- atched/pip/__pip-runner__.py install -i
177- https://user:not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an.
178- actual.token.not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an.
179- actual.token.not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an.
180- actual.token@myplatform.jfrog.io/artifactory/api/pypi/cli-pipenv-pypi-virtual-17
181- 15766379/simple
182- --no-input --upgrade --no-deps -r
183- /var/folders/2c/cdvww2550p90b0sdbz6w6jqc0000gn/T/pipenv-bs956chg-requirements/pi
184- penv-hejkfcsj-hashed-reqs.txt` ,
185- credentialsArgument : "https://user:not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an." +
186- "actual.token.not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an." +
187- "actual.token.not.an.actual.token.not.an.actual.token.not.an.actual.token.not.an." +
188- "actual.token@myplatform.jfrog.io/artifactory/api/pypi/cli-pipenv-pypi-virtual-17" +
189- "15766379/simple" ,
188+ inputText : "Preparing Installation of \" toml==0.10.2; python_version >= '2.6' and \n " +
189+ "python_version not in '3.0, 3.1, 3.2' \n " +
190+ "--hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \n " +
191+ "--hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f\" \n " +
192+ "$ \n " +
193+ "/usr/local/Cellar/pipenv/2023.12.1/libexec/lib/python3.12/site-packages/pipenv/p\n " +
194+ "atched/pip/__pip-runner__.py install -i \n " +
195+ "https://user:" + testFakePassword + testFakePassword + testFakePassword + testFakePassword + ".\n " +
196+ testFakePassword + testFakePassword + testFakePassword + testFakePassword + ".\n " +
197+ testFakePassword + testFakePassword + testFakePassword + testFakePassword + ".\n " +
198+ testFakePassword + "@test.example.com/artifactory/api/pypi/cli-pipenv-pypi-virtual-17\n " +
199+ "15766379/simple \n " +
200+ "--no-input --upgrade --no-deps -r \n " +
201+ "/var/folders/2c/cdvww2550p90b0sdbz6w6jqc0000gn/T/pipenv-bs956chg-requirements/pi\n " +
202+ "penv-hejkfcsj-hashed-reqs.txt" ,
203+ credentialsArgument : multiLineCredential ,
190204 },
191205 }
192206
0 commit comments