@Override public Result run() { final ServiceDiscoveryManager serviceDiscoveryManager = client.getManager(ServiceDiscoveryManager.class); final MultiUserChatManager multiUserChatManager = client.getManager(MultiUserChatManager.class); try { List<ChatService> chatServices = multiUserChatManager.discoverChatServices().getResult(); if (chatServices.size() < 1) { return Result.FAILED; } final ChatService chatService = chatServices.get(0); final ChatRoom room = chatService.createRoom(UUID.randomUUID().toString()); room.enter("test"); try { final DataForm.Field mam = room.getConfigurationForm().get().findField("mam"); if (mam != null) { return Result.PASSED; } } catch (ExecutionException | InterruptedException e) { //ignore } final Set<String> features = serviceDiscoveryManager.discoverInformation(room.getAddress()).getResult().getFeatures(); final boolean mam = TestUtils.hasAnyone(MAM.NAMESPACES,features); room.destroy().getResult(); return mam ? Result.PASSED : Result.FAILED; } catch (XmppException e) { return Result.FAILED; } }
@Override public Result run() { ServiceDiscoveryManager manager = client.getManager(ServiceDiscoveryManager.class); AsyncResult<InfoNode> result = manager.discoverInformation(client.getConnectedResource().asBareJid()); try { final InfoNode infoNode = result.get(10, TimeUnit.SECONDS); final Set<String> features = infoNode.getFeatures(); if (!features.contains(PUBLISH_OPTIONS) && !features.contains(WHITELISTED)) { return Result.FAILED; } for (Identity identity : infoNode.getIdentities()) { if ("pep".equalsIgnoreCase(identity.getType()) && "pubsub".equalsIgnoreCase(identity.getCategory())) { return Result.PASSED; } } return Result.FAILED; } catch (Exception e) { e.printStackTrace(); return Result.FAILED; } }
@Override public Result run() { final String domain = client.getConnectedResource().getDomain(); final XmppClient testClient = XmppClient.create(domain); try { testClient.connect(); RegistrationManager registrationManager = testClient.getManager(RegistrationManager.class); if(registrationManager.isRegistrationSupported().getResult()) { registrationManager.getRegistration().get(); return Result.PASSED; } return Result.FAILED; } catch (Exception e) { return Result.FAILED; } }
private boolean publishWithAccessModel(final PubSubNode node, final Object object, final AccessModel accessModel, final boolean retry) { try { node.publish(object, PublishOptions.builder().accessModel(accessModel).build()).get(); return true; } catch (ExecutionException e) { if (e.getCause() instanceof StanzaException) { StanzaException stanzaException = (StanzaException) e.getCause(); if (stanzaException.getCondition().equals(Condition.CONFLICT) && retry) { try { node.configureNode(NodeConfiguration.builder().accessModel(accessModel).build()).get(); } catch (Exception inner) { return false; } return publishWithAccessModel(node, object, accessModel, false); } } return false; } catch (InterruptedException e) { return false; } } }
@Override public boolean run() { final String domain = client.getConnectedResource().getDomain(); final XmppClient testClient = XmppClient.create(domain); try { testClient.connect(); RegistrationManager registrationManager = testClient.getManager(RegistrationManager.class); if (registrationManager.isRegistrationSupported().getResult()) { registrationManager.getRegistration().get(); return true; } return false; } catch (Exception e) { return false; } } }
@Override public boolean run() { ServiceDiscoveryManager manager = client.getManager(ServiceDiscoveryManager.class); AsyncResult<InfoNode> result = manager.discoverInformation(client.getConnectedResource().asBareJid()); try { final InfoNode infoNode = result.get(10, TimeUnit.SECONDS); if (!hasPepIdentity(infoNode)) { return false; } final Set<String> features = infoNode.getFeatures(); if (features.contains(PUBLISH_OPTIONS)) { PubSubService personalEventingService = client.getManager(PubSubManager.class).createPersonalEventingService(); final String temporaryTestNamespace = NAMESPACE + "." + UUID.randomUUID(); PubSubNode node = personalEventingService.node(temporaryTestNamespace); publishWithAccessModel(node, new Bundle(), AccessModel.OPEN, true); NodeConfiguration configuration = node.getNodeConfiguration().get(); AccessModel accessModel = configuration.getAccessModel(); node.delete().get(); return accessModel.equals(AccessModel.OPEN); } else { return features.contains(WHITELISTED); } } catch (Exception e) { e.printStackTrace(); return false; } }
boolean hasFormField = false; try { DataForm form = room.getConfigurationForm().get(); final DataForm.Field mam = form.findField("mam"); //ejabberd community final DataForm.Field roomConfigMam = form.findField("muc#roomconfig_mam"); //ejabberd SaaS