-
Type:
Bug
-
Status: Resolved (View Workflow)
-
Priority:
Major
-
Resolution: Fixed
-
Component/s: core
-
Labels:
-
Similar Issues:
Calling CLICommandInvoker.invoke() changes Jenkins authorization as a side effect which means that many operations against Jenkins model failed later.
It is a quite common to prepare data in Jenkins instance, call CLI command and verify the state of Jenkins model later.
How-to reproduce:
JenkinsRule j = new JenkinsRule(); j.createFreeStyleProject("aProject"); j.jenkins.getItem("aProject").getDisplayName() // OK -> 'aProject' CLICommandInvoker command = new CLICommandInvoker(j, "version"); CLICommandInvoker.Result result = command.authorizedTo(Jenkins.READ).invoke(); j.jenkins.getItem("aProject").getDisplayName() // Fail -> NPE
How-to fix:
- in CLICommandInvoker.setAuth() save current SecurityRealm, AuthorizationStrategy and thread's SecurityContext
- in CLICommandInvoker.invoke() after result = new Result(returnCode, out, err); call a new method restoreAuth()
- implement a new method CLICommandInvoker.restoreAuth() where SecurityRealm, AuthorizationStrategy and thread's SecurityContext is set to previously saved values
- is blocking
-
JENKINS-32535 Improve test coverage of CLI commands 'add-job-to-view' and 'remove-job-from-view'
-
- Resolved
-
Code changed in jenkins
User: Robert Sandell
Path:
src/main/java/hudson/cli/CLICommandInvoker.java
http://jenkins-ci.org/commit/jenkins-test-harness/cd049fc36de74e99287a9696b6ea9409ffff62c9
Log:
Merge pull request #15 from pjanouse/
JENKINS-32571-cleanupJENKINS-32571Follow-up & clean-upCompare: https://github.com/jenkinsci/jenkins-test-harness/compare/e27cb2ecb145...cd049fc36de7