aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/network/OAuthTest.java
blob: 6888cecd530d1647a57776b7724cb75cee614588 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package cgeo.geocaching.network;

import org.eclipse.jdt.annotation.NonNull;

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 @NonNull
            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 @NonNull
                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("*")));
    }
}