Play Age Signals API (베타) 통합 테스트

앱과의 Play Age Signals API (베타) 통합을 테스트하려면 연령 신호 아티팩트에서 사용할 수 있는 FakeAgeSignalsManager 구현을 사용하세요. FakeAgeSignalsManager 구현을 사용하면 API의 동작을 시뮬레이션할 수 있습니다.

FakeAgeSignalsManager는 앱 동작을 확인하기 위한 단위 또는 통합 테스트용으로만 사용해야 합니다. 통합을 테스트하려면 AgeSignalsManager 인스턴스를 FakeAgeSignalsManager 인스턴스로 바꿉니다.

다음 예에서는 인증된 성인의 응답을 시뮬레이션합니다.

AgeSignalsResult fakeVerifiedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.VERIFIED)
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeVerifiedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);

다음 예에서는 13~17세의 관리 대상 사용자의 응답을 시뮬레이션합니다.

AgeSignalsResult fakeSupervisedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);

다음 예에서는 이전에 승인된 주요 변경사항이 없는 13~17세 감독 대상 사용자의 대기 중인 주요 변경사항 승인에 대한 응답을 시뮬레이션합니다.

AgeSignalsResult fakeSupervisedApprovalPendingUser =
      AgeSignalsResult.builder()
          .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
          .setAgeLower(13)
          .setAgeUpper(17)
          .setInstallId("fake_install_id")
          .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);

다음 예에서는 2025년 2월 1일부터 시행되는 중대한 변경사항을 포함하여 모든 중대한 변경사항이 승인된 13~17세의 감독 대상 사용자에 대해 승인 대기 중인 중대한 변경사항의 응답을 시뮬레이션합니다.

AgeSignalsResult fakeSupervisedApprovalPendingUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
            Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant()))
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);

다음 예시에서는 2025년 2월 1일부터 적용되는 중요한 변경사항을 포함하여 모든 중요한 변경사항이 승인된 13~17세의 감독 대상 사용자에 대해 중요한 변경사항 승인이 거부되는 상황을 시뮬레이션합니다.

AgeSignalsResult fakeSupervisedApprovalDeniedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
            Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant()))
        .setInstallId("fake_install_id")
        .build();
 FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
 manager.setNextAgeSignalsResult(fakeSupervisedApprovalDeniedUser);
 manager.checkAgeSignals(AgeSignalsRequest.builder().build())
   .addOnSuccessListener(/* handle success case */)
   .addOnFailureListener(/* handle failure case */);

다음 예에서는 알 수 없는 사용자 상태에 대한 응답을 시뮬레이션합니다.

AgeSignalsResult fakeUnknownUser =
    AgeSignalsResult.builder().setUserStatus(AgeSignalsVerificationStatus.UNKNOWN).build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeUnknownUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);

다음 예시에서는 네트워크 오류 코드가 있는 응답을 시뮬레이션합니다.

FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsException(
  new AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR));
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
  .addOnSuccessListener(/* handle success case */)
  .addOnFailureListener(/* handle failure case */);