|
31 | 31 | import java.util.UUID; |
32 | 32 |
|
33 | 33 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 34 | +import static org.junit.jupiter.api.Assertions.assertFalse; |
34 | 35 | import static org.junit.jupiter.api.Assertions.assertInstanceOf; |
35 | 36 | import static org.junit.jupiter.api.Assertions.assertThrows; |
36 | 37 | import static org.junit.jupiter.api.Assertions.assertTrue; |
@@ -811,4 +812,88 @@ private List<TokenCredential> extractCredentials(DefaultAzureCredential credenti |
811 | 812 | throw new RuntimeException("Failed to extract credentials", e); |
812 | 813 | } |
813 | 814 | } |
| 815 | + |
| 816 | + @Test |
| 817 | + public void testRequireEnvVarsSuccess() { |
| 818 | + // Setup - create configuration with required environment variables present |
| 819 | + TestConfigurationSource configSource = new TestConfigurationSource().put("AZURE_CLIENT_ID", CLIENT_ID) |
| 820 | + .put("AZURE_TENANT_ID", TENANT_ID) |
| 821 | + .put("AZURE_CLIENT_SECRET", "test-secret"); |
| 822 | + Configuration configuration = TestUtils.createTestConfiguration(configSource); |
| 823 | + |
| 824 | + // Test - should not throw when all required env vars are present |
| 825 | + DefaultAzureCredential credential |
| 826 | + = new DefaultAzureCredentialBuilder() |
| 827 | + .requireEnvVars(AzureIdentityEnvVars.AZURE_CLIENT_ID, AzureIdentityEnvVars.AZURE_TENANT_ID, |
| 828 | + AzureIdentityEnvVars.AZURE_CLIENT_SECRET) |
| 829 | + .configuration(configuration) |
| 830 | + .build(); |
| 831 | + |
| 832 | + // Verify the credential was created successfully |
| 833 | + Assertions.assertNotNull(credential); |
| 834 | + } |
| 835 | + |
| 836 | + @Test |
| 837 | + public void testRequireEnvVarsSingleMissing() { |
| 838 | + // Setup - create configuration missing one required environment variable |
| 839 | + TestConfigurationSource configSource |
| 840 | + = new TestConfigurationSource().put("AZURE_CLIENT_ID", CLIENT_ID).put("AZURE_TENANT_ID", TENANT_ID); |
| 841 | + // AZURE_CLIENT_SECRET is missing |
| 842 | + Configuration configuration = TestUtils.createTestConfiguration(configSource); |
| 843 | + |
| 844 | + // Test - should throw when required env var is missing |
| 845 | + IllegalStateException exception = assertThrows(IllegalStateException.class, |
| 846 | + () -> new DefaultAzureCredentialBuilder() |
| 847 | + .requireEnvVars(AzureIdentityEnvVars.AZURE_CLIENT_ID, AzureIdentityEnvVars.AZURE_TENANT_ID, |
| 848 | + AzureIdentityEnvVars.AZURE_CLIENT_SECRET) |
| 849 | + .configuration(configuration) |
| 850 | + .build()); |
| 851 | + |
| 852 | + // Verify error message |
| 853 | + assertTrue(exception.getMessage().contains("Required environment variable is missing: AZURE_CLIENT_SECRET")); |
| 854 | + } |
| 855 | + |
| 856 | + @Test |
| 857 | + public void testRequireEnvVarsMultipleMissing() { |
| 858 | + // Setup - create configuration missing multiple required environment variables |
| 859 | + TestConfigurationSource configSource = new TestConfigurationSource().put("AZURE_CLIENT_ID", CLIENT_ID); |
| 860 | + // AZURE_TENANT_ID and AZURE_CLIENT_SECRET are missing |
| 861 | + Configuration configuration = TestUtils.createTestConfiguration(configSource); |
| 862 | + |
| 863 | + // Test - should throw when multiple required env vars are missing |
| 864 | + IllegalStateException exception = assertThrows(IllegalStateException.class, |
| 865 | + () -> new DefaultAzureCredentialBuilder() |
| 866 | + .requireEnvVars(AzureIdentityEnvVars.AZURE_CLIENT_ID, AzureIdentityEnvVars.AZURE_TENANT_ID, |
| 867 | + AzureIdentityEnvVars.AZURE_CLIENT_SECRET) |
| 868 | + .configuration(configuration) |
| 869 | + .build()); |
| 870 | + |
| 871 | + // Verify error message contains all missing variables |
| 872 | + assertTrue(exception.getMessage().contains("Required environment variables are missing:")); |
| 873 | + assertTrue(exception.getMessage().contains("AZURE_TENANT_ID")); |
| 874 | + assertTrue(exception.getMessage().contains("AZURE_CLIENT_SECRET")); |
| 875 | + // Should not contain AZURE_CLIENT_ID since it is present |
| 876 | + String message = exception.getMessage(); |
| 877 | + assertFalse(message.contains("AZURE_CLIENT_ID")); |
| 878 | + } |
| 879 | + |
| 880 | + @Test |
| 881 | + public void testRequireEnvVarsEmptyValue() { |
| 882 | + // Setup - create configuration with empty string for required environment variable |
| 883 | + TestConfigurationSource configSource = new TestConfigurationSource().put("AZURE_CLIENT_ID", CLIENT_ID) |
| 884 | + .put("AZURE_TENANT_ID", TENANT_ID) |
| 885 | + .put("AZURE_CLIENT_SECRET", ""); // Empty string should be treated as missing |
| 886 | + Configuration configuration = TestUtils.createTestConfiguration(configSource); |
| 887 | + |
| 888 | + // Test - should throw when required env var is empty |
| 889 | + IllegalStateException exception = assertThrows(IllegalStateException.class, |
| 890 | + () -> new DefaultAzureCredentialBuilder() |
| 891 | + .requireEnvVars(AzureIdentityEnvVars.AZURE_CLIENT_ID, AzureIdentityEnvVars.AZURE_TENANT_ID, |
| 892 | + AzureIdentityEnvVars.AZURE_CLIENT_SECRET) |
| 893 | + .configuration(configuration) |
| 894 | + .build()); |
| 895 | + |
| 896 | + // Verify error message |
| 897 | + assertTrue(exception.getMessage().contains("Required environment variable is missing: AZURE_CLIENT_SECRET")); |
| 898 | + } |
814 | 899 | } |
0 commit comments