44import com .cloudbees .plugins .credentials .common .UsernamePasswordCredentials ;
55import io .jenkins .plugins .casc .misc .ConfiguredWithCode ;
66import io .jenkins .plugins .casc .misc .JenkinsConfiguredWithCodeRule ;
7+ import java .io .File ;
8+ import java .io .FileInputStream ;
9+ import java .io .FileWriter ;
10+ import java .io .InputStream ;
711import java .util .Collections ;
812import java .util .List ;
13+ import java .util .Properties ;
914import jenkins .model .Jenkins ;
1015import org .junit .Rule ;
1116import org .junit .Test ;
1621
1722public class PropertiesSecretSourceTest {
1823
24+ private static final String USERNAME_SECRET = "ken" ;
25+
1926 @ Rule
2027 public RuleChain chain = RuleChain .outerRule (new EnvironmentVariables ()
2128 .set ("SECRETS_FILE" , getClass ().getResource ("secrets.properties" ).getFile ()))
2229 .around (new JenkinsConfiguredWithCodeRule ());
2330
2431 @ Test
2532 @ ConfiguredWithCode ("PropertiesSecretSourceTest.yaml" )
26- public void test_reading_secrets_from_properties () throws Exception {
33+ public void testReadingSecretsFromProperties () throws Exception {
2734 List <UsernamePasswordCredentials > credentialList = CredentialsProvider
2835 .lookupCredentials (UsernamePasswordCredentials .class ,
2936 Jenkins .getInstanceOrNull (), null , Collections .emptyList ());
@@ -32,7 +39,39 @@ public void test_reading_secrets_from_properties() throws Exception {
3239 UsernamePasswordCredentials credentials = credentialList .get (0 );
3340
3441 // https://leahneukirchen.org/blog/archive/2019/10/ken-thompson-s-unix-password.html
35- assertEquals ("ken" , credentials .getUsername ());
42+ assertEquals (USERNAME_SECRET , credentials .getUsername ());
3643 assertEquals ("p/q2-q4!" , credentials .getPassword ().getPlainText ());
3744 }
45+
46+ @ Test
47+ @ ConfiguredWithCode ("PropertiesSecretSourceTest.yaml" )
48+ public void testSecretsFromPropertiesAreUpdatedAfterReload () throws Exception {
49+ File secretsFile = new File (getClass ().getResource ("secrets.properties" ).getFile ());
50+ Properties secrets = new Properties ();
51+ InputStream inputStream = new FileInputStream (secretsFile );
52+ secrets .load (inputStream );
53+
54+ FileWriter fileWriter = new FileWriter (secretsFile );
55+
56+ String secretName = "testuser" ;
57+ String updatedTestUserSecret = "charmander" ;
58+ secrets .setProperty (secretName , updatedTestUserSecret );
59+ try {
60+ secrets .store (fileWriter , "store to properties file" );
61+
62+ ConfigurationAsCode .get ().configure (this .getClass ().getResource ("PropertiesSecretSourceTest.yaml" ).toString ());
63+
64+ List <UsernamePasswordCredentials > credentialList = CredentialsProvider
65+ .lookupCredentials (UsernamePasswordCredentials .class ,
66+ Jenkins .getInstanceOrNull (), null , Collections .emptyList ());
67+ assertEquals (1 , credentialList .size ());
68+
69+ UsernamePasswordCredentials credentials = credentialList .get (0 );
70+
71+ assertEquals (updatedTestUserSecret , credentials .getUsername ());
72+ } finally {
73+ secrets .setProperty (secretName , USERNAME_SECRET );
74+ secrets .store (fileWriter , "store to properties file" );
75+ }
76+ }
3877}
0 commit comments