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 package com.jcabi.github;
31
32 import com.jcabi.http.Request;
33 import com.jcabi.http.mock.MkAnswer;
34 import com.jcabi.http.mock.MkContainer;
35 import com.jcabi.http.mock.MkGrizzlyContainer;
36 import com.jcabi.http.request.FakeRequest;
37 import com.jcabi.http.request.JdkRequest;
38 import java.net.HttpURLConnection;
39 import javax.json.Json;
40 import javax.json.JsonObject;
41 import org.apache.commons.lang3.RandomStringUtils;
42 import org.hamcrest.MatcherAssert;
43 import org.hamcrest.Matchers;
44 import org.junit.Rule;
45 import org.junit.Test;
46 import org.mockito.Mockito;
47
48
49
50
51
52
53
54 public final class RtForksTest {
55
56
57
58
59 public static final String ORGANIZATION = "organization";
60
61
62
63
64
65 @Rule
66 public final transient RandomPort resource = new RandomPort();
67
68
69
70
71
72 @Test
73 public void retrievesForks() {
74 final RtForks forks = new RtForks(
75 new FakeRequest()
76 .withBody("[]"), this.repo()
77 );
78 MatcherAssert.assertThat(
79 forks.iterate("newest"),
80 Matchers.<Fork>iterableWithSize(0)
81 );
82 }
83
84
85
86
87
88
89 @Test
90 public void createsFork() throws Exception {
91 final String organization = RandomStringUtils.randomAlphanumeric(10);
92 final MkAnswer answer = new MkAnswer.Simple(
93 HttpURLConnection.HTTP_OK,
94 fork(organization).toString()
95 );
96 try (
97 final MkContainer container = new MkGrizzlyContainer().next(
98 new MkAnswer.Simple(
99 HttpURLConnection.HTTP_ACCEPTED,
100 fork(organization).toString()
101 )
102 ).next(answer).start(this.resource.port())) {
103 final Repo owner = Mockito.mock(Repo.class);
104 final Coordinates coordinates = new Coordinates.Simple(
105 "test_user", "test_repo"
106 );
107 Mockito.doReturn(coordinates).when(owner).coordinates();
108 final RtForks forks = new RtForks(
109 new JdkRequest(container.home()),
110 owner
111 );
112 final Fork fork = forks.create(organization);
113 MatcherAssert.assertThat(
114 container.take().method(),
115 Matchers.equalTo(Request.POST)
116 );
117 MatcherAssert.assertThat(
118 fork.json().getString(ORGANIZATION),
119 Matchers.equalTo(organization)
120 );
121 }
122 }
123
124
125
126
127
128
129 private Repo repo() {
130 final Repo repo = Mockito.mock(Repo.class);
131 Mockito.doReturn(new Coordinates.Simple("test", "forks"))
132 .when(repo).coordinates();
133 return repo;
134 }
135
136
137
138
139
140
141 private static JsonObject fork(
142 final String organization) {
143 return Json.createObjectBuilder()
144 .add("id", 1)
145 .add(ORGANIZATION, organization)
146 .build();
147 }
148 }