Skip to content

Commit

Permalink
fix: do not throw NPE from BigQueryImpl.testIamPermissions
Browse files Browse the repository at this point in the history
Fix for issue where BigQueryImpl.testIamPermissions will throw a
NullPointerException if the caller does not have any of the permissions
being checked.
  • Loading branch information
rculbertson committed Sep 20, 2021
1 parent e384f5a commit e5e72be
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
Expand Up @@ -1495,7 +1495,9 @@ public com.google.api.services.bigquery.model.TestIamPermissionsResponse call()
getOptions().getRetrySettings(),
EXCEPTION_HANDLER,
getOptions().getClock());
return ImmutableList.copyOf(response.getPermissions());
return response.getPermissions() == null
? ImmutableList.of()
: ImmutableList.copyOf(response.getPermissions());
} catch (RetryHelperException e) {
throw BigQueryException.translateAndThrow(e);
}
Expand Down
Expand Up @@ -2766,4 +2766,21 @@ public void testTestIamPermissions() {
assertEquals(perms, grantedPermissions);
verify(bigqueryRpcMock).testIamPermissions(resourceId, checkedPermissions, EMPTY_RPC_OPTIONS);
}

@Test
public void testTestIamPermissionsWhenNoPermissionsGranted() {
final String resourceId =
String.format("projects/%s/datasets/%s/tables/%s", PROJECT, DATASET, TABLE);
final List<String> checkedPermissions = ImmutableList.<String>of("foo", "bar", "baz");
// If caller has no permissions, TestIamPermissionsResponse.permissions will be null
final com.google.api.services.bigquery.model.TestIamPermissionsResponse response =
new com.google.api.services.bigquery.model.TestIamPermissionsResponse()
.setPermissions(null);
when(bigqueryRpcMock.testIamPermissions(resourceId, checkedPermissions, EMPTY_RPC_OPTIONS))
.thenReturn(response);
bigquery = options.getService();
List<String> perms = bigquery.testIamPermissions(TABLE_ID, checkedPermissions);
assertEquals(perms, ImmutableList.of());
verify(bigqueryRpcMock).testIamPermissions(resourceId, checkedPermissions, EMPTY_RPC_OPTIONS);
}
}

0 comments on commit e5e72be

Please sign in to comment.