diff options
Diffstat (limited to 'test/com/isode/stroke/disco/CapsInfoGeneratorTest.java')
-rw-r--r-- | test/com/isode/stroke/disco/CapsInfoGeneratorTest.java | 93 |
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 |