summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/disco/CapsInfoGeneratorTest.java')
-rw-r--r--test/com/isode/stroke/disco/CapsInfoGeneratorTest.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/test/com/isode/stroke/disco/CapsInfoGeneratorTest.java b/test/com/isode/stroke/disco/CapsInfoGeneratorTest.java
new file mode 100644
index 0000000..f718daf
--- /dev/null
+++ b/test/com/isode/stroke/disco/CapsInfoGeneratorTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2010-2013 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+/*
+ * Copyright (c) 2015 Tarun Gupta.
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+package com.isode.stroke.disco;
+
+import com.isode.stroke.crypto.CryptoProvider;
+import com.isode.stroke.crypto.JavaCryptoProvider;
+import com.isode.stroke.elements.DiscoInfo;
+import com.isode.stroke.elements.Form;
+import com.isode.stroke.elements.FormField;
+import com.isode.stroke.elements.CapsInfo;
+import com.isode.stroke.disco.CapsInfoGenerator;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import org.junit.Before;
+
+public class CapsInfoGeneratorTest {
+
+ private CryptoProvider crypto;
+
+ @Before
+ public void setUp() {
+ crypto = new JavaCryptoProvider();
+ }
+
+ @Test
+ public void testGenerate_XEP0115SimpleExample() {
+ DiscoInfo discoInfo = new DiscoInfo();
+ discoInfo.addIdentity(new DiscoInfo.Identity("Exodus 0.9.1", "client", "pc"));
+ discoInfo.addFeature("http://jabber.org/protocol/disco#items");
+ discoInfo.addFeature("http://jabber.org/protocol/caps");
+ discoInfo.addFeature("http://jabber.org/protocol/disco#info");
+ discoInfo.addFeature("http://jabber.org/protocol/muc");
+
+ CapsInfoGenerator testling = new CapsInfoGenerator("http://code.google.com/p/exodus", crypto);
+ CapsInfo result = testling.generateCapsInfo(discoInfo);
+
+ assertEquals("http://code.google.com/p/exodus", result.getNode());
+ assertEquals("sha-1", result.getHash());
+ assertEquals("QgayPKawpkPSDYmwT/WM94uAlu0=", result.getVersion());
+ }
+
+ @Test
+ public void testGenerate_XEP0115ComplexExample() {
+ DiscoInfo discoInfo = new DiscoInfo();
+ discoInfo.addIdentity(new DiscoInfo.Identity("Psi 0.11", "client", "pc", "en"));
+ discoInfo.addIdentity(new DiscoInfo.Identity("Ψ 0.11", "client", "pc", "el"));
+ discoInfo.addFeature("http://jabber.org/protocol/disco#items");
+ discoInfo.addFeature("http://jabber.org/protocol/caps");
+ discoInfo.addFeature("http://jabber.org/protocol/disco#info");
+ discoInfo.addFeature("http://jabber.org/protocol/muc");
+
+ Form extension = new Form(Form.Type.RESULT_TYPE);
+ FormField field = new FormField(FormField.Type.HIDDEN_TYPE, "urn:xmpp:dataforms:softwareinfo");
+ field.setName("FORM_TYPE");
+ extension.addField(field);
+ field = new FormField(FormField.Type.LIST_MULTI_TYPE);
+ field.addValue("ipv6");
+ field.addValue("ipv4");
+ field.setName("ip_version");
+ extension.addField(field);
+ field = new FormField(FormField.Type.TEXT_SINGLE_TYPE, "Psi");
+ field.setName("software");
+ extension.addField(field);
+ field = new FormField(FormField.Type.TEXT_SINGLE_TYPE, "0.11");
+ field.setName("software_version");
+ extension.addField(field);
+ field = new FormField(FormField.Type.TEXT_SINGLE_TYPE, "Mac");
+ field.setName("os");
+ extension.addField(field);
+ field = new FormField(FormField.Type.TEXT_SINGLE_TYPE, "10.5.1");
+ field.setName("os_version");
+ extension.addField(field);
+ discoInfo.addExtension(extension);
+
+ CapsInfoGenerator testling = new CapsInfoGenerator("http://psi-im.org", crypto);
+ CapsInfo result = testling.generateCapsInfo(discoInfo);
+
+ assertEquals("q07IKJEyjvHSyhy//CH0CxmKi8w=", result.getVersion());
+ }
+} \ No newline at end of file