99import static io .opentelemetry .contrib .gcp .auth .GcpAuthAutoConfigurationCustomizerProvider .QUOTA_USER_PROJECT_HEADER ;
1010import static org .assertj .core .api .Assertions .assertThat ;
1111import static org .junit .jupiter .api .Assertions .assertEquals ;
12+ import static org .junit .jupiter .api .Assertions .assertThrows ;
1213import static org .junit .jupiter .api .Assertions .assertTrue ;
1314
1415import com .google .auth .oauth2 .AccessToken ;
2829import io .opentelemetry .sdk .autoconfigure .internal .ComponentLoader ;
2930import io .opentelemetry .sdk .autoconfigure .internal .SpiHelper ;
3031import io .opentelemetry .sdk .autoconfigure .spi .ConfigProperties ;
32+ import io .opentelemetry .sdk .autoconfigure .spi .ConfigurationException ;
3133import io .opentelemetry .sdk .autoconfigure .spi .traces .ConfigurableSpanExporterProvider ;
3234import io .opentelemetry .sdk .common .CompletableResultCode ;
3335import io .opentelemetry .sdk .trace .data .SpanData ;
@@ -77,20 +79,17 @@ class GcpAuthAutoConfigurationCustomizerProviderTest {
7779 "foo=bar" );
7880
7981 @ BeforeEach
80- @ SuppressWarnings ("CannotMockMethod" )
8182 public void setup () {
8283 MockitoAnnotations .openMocks (this );
83- Mockito .when (mockedGoogleCredentials .getQuotaProjectId ())
84- .thenReturn (DUMMY_GCP_QUOTA_PROJECT_ID );
85- Mockito .when (mockedGoogleCredentials .getAccessToken ())
86- .thenReturn (new AccessToken ("fake" , Date .from (Instant .now ())));
8784 }
8885
8986 @ Test
9087 public void testCustomizerOtlpHttp () {
9188 // Set resource project system property
92- System .setProperty ("google.cloud.project" , DUMMY_GCP_RESOURCE_PROJECT_ID );
89+ System .setProperty (
90+ ConfigurableOption .GOOGLE_CLOUD_PROJECT .getSystemProperty (), DUMMY_GCP_RESOURCE_PROJECT_ID );
9391 // Prepare mocks
92+ prepareMockBehaviorForGoogleCredentials ();
9493 OtlpHttpSpanExporter mockOtlpHttpSpanExporter = Mockito .mock (OtlpHttpSpanExporter .class );
9594 OtlpHttpSpanExporterBuilder otlpSpanExporterBuilder = OtlpHttpSpanExporter .builder ();
9695 OtlpHttpSpanExporterBuilder spyOtlpHttpSpanExporterBuilder =
@@ -123,8 +122,7 @@ public void testCustomizerOtlpHttp() {
123122 Mockito .verify (spyOtlpHttpSpanExporterBuilder , Mockito .times (1 ))
124123 .setHeaders (headerSupplierCaptor .capture ());
125124 assertEquals (2 , headerSupplierCaptor .getValue ().get ().size ());
126- assertThat (verifyAuthHeadersQuotaProjectPresent (headerSupplierCaptor .getValue ().get ()))
127- .isTrue ();
125+ assertThat (authHeadersQuotaProjectIsPresent (headerSupplierCaptor .getValue ().get ())).isTrue ();
128126
129127 Mockito .verify (mockOtlpHttpSpanExporter , Mockito .atLeast (1 )).export (Mockito .anyCollection ());
130128
@@ -146,8 +144,10 @@ public void testCustomizerOtlpHttp() {
146144 @ Test
147145 public void testCustomizerOtlpGrpc () {
148146 // Set resource project system property
149- System .setProperty ("google.cloud.project" , DUMMY_GCP_RESOURCE_PROJECT_ID );
147+ System .setProperty (
148+ ConfigurableOption .GOOGLE_CLOUD_PROJECT .getSystemProperty (), DUMMY_GCP_RESOURCE_PROJECT_ID );
150149 // Prepare mocks
150+ prepareMockBehaviorForGoogleCredentials ();
151151 OtlpGrpcSpanExporter mockOtlpGrpcSpanExporter = Mockito .mock (OtlpGrpcSpanExporter .class );
152152 OtlpGrpcSpanExporterBuilder otlpSpanExporterBuilder = OtlpGrpcSpanExporter .builder ();
153153 OtlpGrpcSpanExporterBuilder spyOtlpGrpcSpanExporterBuilder =
@@ -179,7 +179,7 @@ public void testCustomizerOtlpGrpc() {
179179 Mockito .verify (spyOtlpGrpcSpanExporterBuilder , Mockito .times (1 ))
180180 .setHeaders (headerSupplierCaptor .capture ());
181181 assertEquals (2 , headerSupplierCaptor .getValue ().get ().size ());
182- verifyAuthHeadersQuotaProjectPresent ( headerSupplierCaptor .getValue ().get ());
182+ assertThat ( authHeadersQuotaProjectIsPresent ( headerSupplierCaptor .getValue ().get ())). isTrue ( );
183183
184184 Mockito .verify (mockOtlpGrpcSpanExporter , Mockito .atLeast (1 )).export (Mockito .anyCollection ());
185185
@@ -198,6 +198,22 @@ public void testCustomizerOtlpGrpc() {
198198 }
199199 }
200200
201+ @ Test
202+ public void testCustomizerFailWithMissingResourceProject () {
203+ OtlpGrpcSpanExporter mockOtlpGrpcSpanExporter = Mockito .mock (OtlpGrpcSpanExporter .class );
204+ assertThrows (
205+ ConfigurationException .class ,
206+ () -> buildOpenTelemetrySdkWithExporter (mockOtlpGrpcSpanExporter ));
207+ }
208+
209+ @ SuppressWarnings ("CannotMockMethod" )
210+ private void prepareMockBehaviorForGoogleCredentials () {
211+ Mockito .when (mockedGoogleCredentials .getQuotaProjectId ())
212+ .thenReturn (DUMMY_GCP_QUOTA_PROJECT_ID );
213+ Mockito .when (mockedGoogleCredentials .getAccessToken ())
214+ .thenReturn (new AccessToken ("fake" , Date .from (Instant .now ())));
215+ }
216+
201217 private OpenTelemetrySdk buildOpenTelemetrySdkWithExporter (SpanExporter spanExporter ) {
202218 SpiHelper spiHelper =
203219 SpiHelper .create (GcpAuthAutoConfigurationCustomizerProviderTest .class .getClassLoader ());
@@ -230,7 +246,7 @@ public String getName() {
230246 return builder .build ().getOpenTelemetrySdk ();
231247 }
232248
233- private static boolean verifyAuthHeadersQuotaProjectPresent (Map <String , String > headers ) {
249+ private static boolean authHeadersQuotaProjectIsPresent (Map <String , String > headers ) {
234250 Set <Entry <String , String >> headerEntrySet = headers .entrySet ();
235251 return headerEntrySet .contains (
236252 new SimpleEntry <>(QUOTA_USER_PROJECT_HEADER , DUMMY_GCP_QUOTA_PROJECT_ID ))
0 commit comments