### Question:
BlobCrypterSecurityToken extends AbstractSecurityToken { @Override public String getAppId() { return getAppUrl(); } BlobCrypterSecurityToken(String container, String domain, String activeUrl, Map<String, String> values); String getUpdatedToken(); String getAuthenticationMode(); boolean isAnonymous(); @Override String getAppId(); static BlobCrypterSecurityToken fromToken(SecurityToken token);  }### Answer:
@Test public void testRealValues() throws Exception { for (BasicBlobCrypter crypter: crypters) { Map<String, String> values = new HashMap<String, String>(); values.put(Keys.APP_URL.getKey(), "http: values.put(Keys.MODULE_ID.getKey(), Long.toString(12345L, 10)); values.put(Keys.OWNER.getKey(), "owner"); values.put(Keys.VIEWER.getKey(), "viewer"); values.put(Keys.TRUSTED_JSON.getKey(), "trusted"); BlobCrypterSecurityToken t = new BlobCrypterSecurityToken(CONTAINER, DOMAIN, null, values); String token = t.getContainer() + ":" + crypter.wrap(t.toMap()); assertTrue("should start with container: " + token, token.startsWith("container:")); String[] fields = StringUtils.split(token, ':'); BlobCrypterSecurityToken t2 = new BlobCrypterSecurityToken(CONTAINER, DOMAIN, "active", crypter.unwrap(fields[1])); assertEquals("http: assertEquals("http: assertEquals(DOMAIN, t2.getDomain()); assertEquals(12345L, t2.getModuleId()); assertEquals("owner", t2.getOwnerId()); assertEquals("viewer", t2.getViewerId()); assertEquals("trusted", t2.getTrustedJson()); assertEquals(CONTAINER, t2.getContainer()); assertEquals("active", t2.getActiveUrl()); } }