### Question:
AuthenticationToken { public String getKeyId() { return this.header.getKeyId(); } AuthenticationToken(final ApnsSigningKey signingKey, final Instant issuedAt);  AuthenticationToken(final String base64EncodedToken); Instant getIssuedAt(); String getKeyId(); String getTeamId(); boolean verifySignature(final ApnsVerificationKey verificationKey); AsciiString getAuthorizationHeader(); @Override String toString(); @Override int hashCode(); @Override boolean equals(final Object obj);  }### Answer:
@Test void testHeaderFromMap() { assertThrows(IllegalArgumentException.class, () -> AuthenticationToken.AuthenticationTokenHeader.fromMap(Collections.emptyMap())); assertThrows(IllegalArgumentException.class, () -> AuthenticationToken.AuthenticationTokenHeader.fromMap( Collections.singletonMap("kid", false))); final String keyId = "test-key-id"; final Map<String, Object> headerMap = new HashMap<>(); headerMap.put("alg", "ES256"); headerMap.put("typ", "JWT"); headerMap.put("kid", keyId); final AuthenticationToken.AuthenticationTokenHeader authenticationTokenHeader = AuthenticationToken.AuthenticationTokenHeader.fromMap(headerMap); assertEquals(keyId, authenticationTokenHeader.getKeyId()); }