1
2
3
4
5
6
7
8
9
10 package org.eclipse.jgit.internal.transport.parser;
11
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertNull;
14 import static org.junit.Assert.assertTrue;
15 import static org.junit.Assert.fail;
16
17 import java.util.Arrays;
18 import java.util.HashSet;
19 import java.util.List;
20 import java.util.Set;
21
22 import org.eclipse.jgit.errors.PackProtocolException;
23 import org.junit.Test;
24
25 public class FirstWantTest {
26
27 @Test
28 public void testFirstWantWithOptions() throws PackProtocolException {
29 String line = "want b9d4d1eb2f93058814480eae9e1b67550f46ee38 "
30 + "no-progress include-tag ofs-delta agent=JGit/unknown "
31 + "session-id=the.client.sid";
32
33 FirstWant r = FirstWant.fromLine(line);
34 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
35 r.getLine());
36 Set<String> capabilities = r.getCapabilities();
37 Set<String> expectedCapabilities = new HashSet<>(
38 Arrays.asList("no-progress", "include-tag", "ofs-delta"));
39 assertEquals(expectedCapabilities, capabilities);
40 assertEquals("JGit/unknown", r.getAgent());
41 assertEquals("the.client.sid", r.getClientSID());
42 }
43
44 @Test
45 public void testFirstWantWithoutOptions() throws PackProtocolException {
46 String line = "want b9d4d1eb2f93058814480eae9e1b67550f46ee38";
47
48 FirstWant r = FirstWant.fromLine(line);
49 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
50 r.getLine());
51 assertTrue(r.getCapabilities().isEmpty());
52 assertNull(r.getAgent());
53 }
54
55 private String makeFirstWantLine(String capability) {
56 return String.format("want b9d4d1eb2f93058814480eae9e1b67550f46ee38 %s", capability);
57 }
58
59 @Test
60 public void testFirstWantNoWhitespace() {
61 try {
62 FirstWant.fromLine(
63 "want b9d4d1eb2f93058814480eae9e1b67550f400000capability");
64 fail("Accepting first want line without SP between oid and first capability");
65 } catch (PackProtocolException e) {
66
67 }
68 }
69
70 @Test
71 public void testFirstWantOnlyWhitespace() throws PackProtocolException {
72 FirstWant r = FirstWant
73 .fromLine("want b9d4d1eb2f93058814480eae9e1b67550f46ee38 ");
74 assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38",
75 r.getLine());
76 }
77
78 @Test
79 public void testFirstWantValidCapabilityNames()
80 throws PackProtocolException {
81 List<String> validNames = Arrays.asList(
82 "c", "cap", "C", "CAP", "1", "1cap", "cap-64k_test",
83 "-", "-cap",
84 "_", "_cap");
85
86 for (String capability: validNames) {
87 FirstWant r = FirstWant.fromLine(makeFirstWantLine(capability));
88 assertEquals(r.getCapabilities().size(), 1);
89 assertTrue(r.getCapabilities().contains(capability));
90 }
91 }
92
93 @Test
94 public void testFirstWantValidAgentName() throws PackProtocolException {
95 FirstWant r = FirstWant.fromLine(makeFirstWantLine("agent=pack.age/Version"));
96 assertEquals(r.getCapabilities().size(), 0);
97 assertEquals("pack.age/Version", r.getAgent());
98 }
99
100 @Test
101 public void testFirstWantValidSessionID() throws PackProtocolException {
102 FirstWant r = FirstWant
103 .fromLine(makeFirstWantLine("session-id=client.session.id"));
104 assertEquals(r.getCapabilities().size(), 0);
105 assertEquals("client.session.id", r.getClientSID());
106 }
107 }