### Question:
SyncStatusNodePermissioningProvider implements NodePermissioningProvider { public boolean hasReachedSync() { return hasReachedSync.get(); } SyncStatusNodePermissioningProvider(
      final Synchronizer synchronizer,
      final Collection<EnodeURL> fixedNodes,
      final MetricsSystem metricsSystem); @Override boolean isPermitted(final EnodeURL sourceEnode, final EnodeURL destinationEnode); boolean hasReachedSync();  }### Answer:
@Test public void whenIsNotInSyncHasReachedSyncShouldReturnFalse() { inSyncListener.onInSyncStatusChange(false); assertThat(provider.hasReachedSync()).isFalse(); assertThat(syncGauge.getAsInt()).isEqualTo(0); }
@Test public void whenInSyncHasReachedSyncShouldReturnTrue() { inSyncListener.onInSyncStatusChange(true); assertThat(provider.hasReachedSync()).isTrue(); assertThat(syncGauge.getAsInt()).isEqualTo(1); }
@Test public void whenInSyncChangesFromTrueToFalseHasReachedSyncShouldReturnTrue() { inSyncListener.onInSyncStatusChange(false); assertThat(provider.hasReachedSync()).isFalse(); assertThat(syncGauge.getAsInt()).isEqualTo(0); inSyncListener.onInSyncStatusChange(true); assertThat(provider.hasReachedSync()).isTrue(); assertThat(syncGauge.getAsInt()).isEqualTo(1); inSyncListener.onInSyncStatusChange(false); assertThat(provider.hasReachedSync()).isTrue(); assertThat(syncGauge.getAsInt()).isEqualTo(1); }