66import static org .assertj .core .api .Assertions .assertThat ;
77import static org .mockito .Mockito .when ;
88
9+ import com .azure .core .http .HttpHeaders ;
10+ import com .azure .core .http .HttpRequest ;
11+ import com .azure .core .http .rest .PagedFlux ;
12+ import com .azure .core .http .rest .PagedIterable ;
13+ import com .azure .core .http .rest .PagedResponse ;
14+ import com .azure .core .util .IterableStream ;
915import com .azure .security .keyvault .secrets .SecretClient ;
1016import com .azure .security .keyvault .secrets .models .KeyVaultSecret ;
17+ import com .azure .security .keyvault .secrets .models .SecretProperties ;
18+ import java .io .IOException ;
1119import java .util .Arrays ;
1220import java .util .LinkedHashMap ;
1321import java .util .List ;
1422import org .junit .Test ;
1523import org .junit .runner .RunWith ;
1624import org .mockito .Mock ;
1725import org .mockito .junit .MockitoJUnitRunner ;
26+ import reactor .core .publisher .Flux ;
27+ import reactor .core .publisher .Mono ;
1828
1929@ RunWith (MockitoJUnitRunner .class )
2030public class KeyVaultOperationUnitTest {
@@ -36,27 +46,27 @@ public class KeyVaultOperationUnitTest {
3646 private static final String TEST_AZURE_KEYVAULT_NAME = "acme-myproject-person-firstname" ;
3747
3848 private static final List <String > TEST_SPRING_RELAXED_BINDING_NAMES = Arrays .asList (
39- TEST_SPRING_RELAXED_BINDING_NAME_0 ,
40- TEST_SPRING_RELAXED_BINDING_NAME_1 ,
41- TEST_SPRING_RELAXED_BINDING_NAME_2 ,
42- TEST_SPRING_RELAXED_BINDING_NAME_3
49+ TEST_SPRING_RELAXED_BINDING_NAME_0 ,
50+ TEST_SPRING_RELAXED_BINDING_NAME_1 ,
51+ TEST_SPRING_RELAXED_BINDING_NAME_2 ,
52+ TEST_SPRING_RELAXED_BINDING_NAME_3
4353 );
4454
4555 @ Mock
4656 private SecretClient keyVaultClient ;
4757 private KeyVaultOperation keyVaultOperation ;
4858
49- public void setupSecretBundle (String id , String value , List <String > secretKeysConfig ) {
59+ public void setupSecretBundle (List <String > secretKeysConfig ) {
5060 keyVaultOperation = new KeyVaultOperation (
51- keyVaultClient ,
52- 0 ,
53- secretKeysConfig ,
54- false );
61+ keyVaultClient ,
62+ 0 ,
63+ secretKeysConfig ,
64+ false );
5565 }
5666
5767 @ Test
5868 public void testGetWithNoSpecficSecretKeys () {
59- setupSecretBundle (TEST_PROPERTY_NAME_1 , TEST_PROPERTY_NAME_1 , null );
69+ setupSecretBundle (null );
6070
6171 final LinkedHashMap <String , String > properties = new LinkedHashMap <>();
6272 properties .put ("testpropertyname1" , TEST_PROPERTY_NAME_1 );
@@ -67,7 +77,7 @@ public void testGetWithNoSpecficSecretKeys() {
6777
6878 @ Test
6979 public void testGetAndMissWhenSecretsProvided () {
70- setupSecretBundle (TEST_PROPERTY_NAME_1 , TEST_PROPERTY_NAME_1 , SECRET_KEYS_CONFIG );
80+ setupSecretBundle (SECRET_KEYS_CONFIG );
7181
7282 final LinkedHashMap <String , String > properties = new LinkedHashMap <>();
7383 properties .put ("key1" , "value1" );
@@ -84,15 +94,15 @@ public void testGetAndHitWhenSecretsProvided() {
8494 when (keyVaultClient .getSecret ("key2" )).thenReturn (new KeyVaultSecret ("key2" , "key2" ));
8595 when (keyVaultClient .getSecret ("key3" )).thenReturn (new KeyVaultSecret ("key3" , "key3" ));
8696
87- setupSecretBundle (SECRET_KEY_1 , SECRET_KEY_1 , SECRET_KEYS_CONFIG );
97+ setupSecretBundle (SECRET_KEYS_CONFIG );
8898
8999 assertThat (keyVaultOperation .getProperty (SECRET_KEY_1 )).isEqualToIgnoringCase (SECRET_KEY_1 );
90100 }
91101
92102 @ Test
93103 public void testList () {
94104 //test list with no specific secret keys
95- setupSecretBundle (TEST_PROPERTY_NAME_1 , TEST_PROPERTY_NAME_1 , null );
105+ setupSecretBundle (null );
96106 final LinkedHashMap <String , String > properties = new LinkedHashMap <>();
97107 properties .put (TEST_PROPERTY_NAME_1 , TEST_PROPERTY_NAME_1 );
98108 keyVaultOperation .setProperties (properties );
@@ -104,7 +114,7 @@ public void testList() {
104114 when (keyVaultClient .getSecret ("key1" )).thenReturn (new KeyVaultSecret ("key1" , "key1" ));
105115 when (keyVaultClient .getSecret ("key2" )).thenReturn (new KeyVaultSecret ("key2" , "key2" ));
106116 when (keyVaultClient .getSecret ("key3" )).thenReturn (new KeyVaultSecret ("key3" , "key3" ));
107- setupSecretBundle (TEST_PROPERTY_NAME_1 , TEST_PROPERTY_NAME_1 , SECRET_KEYS_CONFIG );
117+ setupSecretBundle (SECRET_KEYS_CONFIG );
108118 final String [] specificResult = keyVaultOperation .getPropertyNames ();
109119 assertThat (specificResult .length ).isEqualTo (3 );
110120 assertThat (specificResult [0 ]).isEqualTo (SECRET_KEYS_CONFIG .get (0 ));
@@ -113,27 +123,87 @@ public void testList() {
113123 @ Test
114124 public void setTestSpringRelaxedBindingNames () {
115125 //test list with no specific secret keys
116- setupSecretBundle (TEST_AZURE_KEYVAULT_NAME , TEST_AZURE_KEYVAULT_NAME , null );
126+ setupSecretBundle (null );
117127 LinkedHashMap <String , String > properties = new LinkedHashMap <>();
118128 properties .put ("acme-myproject-person-firstname" , TEST_AZURE_KEYVAULT_NAME );
119129 keyVaultOperation .setProperties (properties );
120130 TEST_SPRING_RELAXED_BINDING_NAMES
121- .forEach (n -> assertThat (keyVaultOperation .getProperty (n )).isEqualTo (TEST_AZURE_KEYVAULT_NAME ));
131+ .forEach (n -> assertThat (keyVaultOperation .getProperty (n )).isEqualTo (TEST_AZURE_KEYVAULT_NAME ));
122132
123133 //test list with specific secret key configs
124- setupSecretBundle (TEST_AZURE_KEYVAULT_NAME , TEST_AZURE_KEYVAULT_NAME , Arrays .asList (TEST_AZURE_KEYVAULT_NAME ));
134+ setupSecretBundle (Arrays .asList (TEST_AZURE_KEYVAULT_NAME ));
125135 properties = new LinkedHashMap <>();
126136 properties .put (TEST_AZURE_KEYVAULT_NAME , TEST_AZURE_KEYVAULT_NAME );
127137 keyVaultOperation .setProperties (properties );
128138 TEST_SPRING_RELAXED_BINDING_NAMES
129- .forEach (n -> assertThat (keyVaultOperation .getProperty (n )).isEqualTo (TEST_AZURE_KEYVAULT_NAME ));
139+ .forEach (n -> assertThat (keyVaultOperation .getProperty (n )).isEqualTo (TEST_AZURE_KEYVAULT_NAME ));
130140
131- setupSecretBundle (TEST_AZURE_KEYVAULT_NAME , TEST_AZURE_KEYVAULT_NAME , SECRET_KEYS_CONFIG );
141+ setupSecretBundle (SECRET_KEYS_CONFIG );
132142 properties = new LinkedHashMap <>();
133143 properties .put ("key1" , "key1" );
134144 properties .put ("key2" , "key2" );
135145 properties .put ("key3" , "key3" );
136146 keyVaultOperation .setProperties (properties );
137147 TEST_SPRING_RELAXED_BINDING_NAMES .forEach (n -> assertThat (keyVaultOperation .getProperty (n )).isEqualTo (null ));
138148 }
149+
150+ @ Test
151+ public void getSecretsWithoutDisabled () {
152+ KeyVaultSecret enableSecret = new KeyVaultSecret ("key1" , "value1" );
153+ enableSecret .getProperties ().setEnabled (true );
154+
155+ KeyVaultSecret disableSecret = new KeyVaultSecret ("key2" , "value2" );
156+ disableSecret .getProperties ().setEnabled (false );
157+
158+ List <SecretProperties > properties = Arrays .asList (enableSecret .getProperties (), disableSecret .getProperties ());
159+ OnePageResponse <SecretProperties > secretResponse = new OnePageResponse <>(properties );
160+ when (keyVaultClient .getSecret ("key1" , null )).thenReturn (enableSecret );
161+ when (keyVaultClient .listPropertiesOfSecrets ())
162+ .thenReturn (new PagedIterable <>(new PagedFlux <>(() -> Mono .just (secretResponse ))));
163+ setupSecretBundle (null );
164+ assertThat (keyVaultOperation .getPropertyNames ().length == 1 );
165+ assertThat (keyVaultOperation .getProperty ("key1" )).isNotNull ();
166+ assertThat (keyVaultOperation .getProperty ("key2" )).isNull ();
167+
168+ }
169+
170+ static class OnePageResponse <T > implements PagedResponse <T > {
171+
172+ List <T > properties = null ;
173+
174+ OnePageResponse (List <T > properties ) {
175+ this .properties = properties ;
176+ }
177+
178+ @ Override
179+ public IterableStream <T > getElements () {
180+ Flux <T > flux = Flux .fromIterable (properties );
181+ return new IterableStream <T >(flux );
182+ }
183+
184+ @ Override
185+ public String getContinuationToken () {
186+ return null ;
187+ }
188+
189+ @ Override
190+ public int getStatusCode () {
191+ return 0 ;
192+ }
193+
194+ @ Override
195+ public HttpHeaders getHeaders () {
196+ return null ;
197+ }
198+
199+ @ Override
200+ public HttpRequest getRequest () {
201+ return null ;
202+ }
203+
204+ @ Override
205+ public void close () throws IOException {
206+
207+ }
208+ }
139209}
0 commit comments