aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/network/OAuthTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/cgeo/geocaching/network/OAuthTest.java')
-rw-r--r--tests/src/cgeo/geocaching/network/OAuthTest.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/src/cgeo/geocaching/network/OAuthTest.java b/tests/src/cgeo/geocaching/network/OAuthTest.java
new file mode 100644
index 0000000..fa0104f
--- /dev/null
+++ b/tests/src/cgeo/geocaching/network/OAuthTest.java
@@ -0,0 +1,49 @@
+package cgeo.geocaching.network;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class OAuthTest extends TestCase {
+ private static final List<Character> UNRESERVED;
+ static {
+ // unreserved characters: ALPHA / DIGIT / "-" / "." / "_" / "~"
+ ArrayList<Character> unreserved = new ArrayList<Character>();
+ for (int i = 65; i <= 90; i++) {
+ unreserved.add((char) i); // uppercase
+ unreserved.add((char) (i + 32)); // lowercase
+ }
+ for (int i = 0; i < 10; i++) {
+ unreserved.add(Character.forDigit(i, 10));
+ }
+ unreserved.add('-');
+ unreserved.add('.');
+ unreserved.add('_');
+ unreserved.add('~');
+ UNRESERVED = unreserved;
+ }
+
+ public static void testUnreservedCharactersMustNotBeEncoded() {
+ for (Character c : UNRESERVED) {
+ final String charAsString = String.valueOf(c);
+ assertEquals("wrong OAuth encoding for " + c, charAsString, OAuth.percentEncode(charAsString));
+ }
+ }
+
+ public static void testOtherCharactersMustBeEncoded() {
+ for (int i = 32; i < 127; i++) {
+ final Character c = (char) i;
+ if (!UNRESERVED.contains(c)) {
+ final String charAsString = String.valueOf(c);
+ final String encoded = OAuth.percentEncode(charAsString);
+ assertFalse("Character '" + charAsString + "' not encoded", charAsString.equals(encoded));
+ assertTrue(encoded.startsWith("%"));
+ }
+ }
+ }
+
+ public static void testAsterisk() {
+ assertFalse("*".equals(OAuth.percentEncode("*")));
+ }
+}