1
2
3
4
5 package com.jcabi.github;
6
7 import com.google.common.base.Optional;
8 import com.jcabi.github.mock.MkGitHub;
9 import com.jcabi.http.Request;
10 import com.jcabi.http.mock.MkAnswer;
11 import com.jcabi.http.mock.MkContainer;
12 import com.jcabi.http.mock.MkGrizzlyContainer;
13 import com.jcabi.http.mock.MkQuery;
14 import com.jcabi.http.request.ApacheRequest;
15 import com.jcabi.http.request.FakeRequest;
16 import jakarta.json.Json;
17 import jakarta.json.JsonObject;
18 import java.io.IOException;
19 import java.io.StringReader;
20 import java.net.HttpURLConnection;
21 import org.hamcrest.MatcherAssert;
22 import org.hamcrest.Matchers;
23 import org.junit.jupiter.api.Test;
24 import org.junit.jupiter.api.extension.ExtendWith;
25
26
27
28
29
30
31
32
33
34
35
36 @ExtendWith(RandomPort.class)
37 @SuppressWarnings("PMD.AvoidDuplicateLiterals")
38 final class RtStatusesTest {
39
40
41
42
43
44 @Test
45 void fetchesCommit() throws IOException {
46 final Commit original = new MkGitHub().randomRepo().git()
47 .commits().get("5e8d65e0dbfab0716db16493e03a0baba480625a");
48 MatcherAssert.assertThat(
49 "Values are not equal",
50 new RtStatuses(new FakeRequest(), original).commit(),
51 Matchers.equalTo(original)
52 );
53 }
54
55 @Test
56 void createsStatus() throws IOException {
57 final String stateprop = "state";
58 final String urlprop = "target_url";
59 final String descprop = "description";
60 final String contextprop = "context";
61 final String url = "https://ci.example.com/1000/output";
62 final String description = "Build has completed successfully";
63 final String context = "continuous-integration/jenkins";
64 final MkContainer container = new MkGrizzlyContainer().next(
65 new MkAnswer.Simple(
66 HttpURLConnection.HTTP_CREATED,
67 Json.createObjectBuilder().add(stateprop, "failure")
68 .add(urlprop, url)
69 .add(descprop, description)
70 .add(contextprop, context)
71 .build().toString()
72 )
73 ).start(RandomPort.port());
74 final Request entry = new ApacheRequest(container.home());
75 final Statuses statuses = new RtStatuses(
76 entry,
77 new RtCommit(
78 entry,
79 new MkGitHub().randomRepo(),
80 "0abcd89jcabitest"
81 )
82 );
83 try {
84 statuses.create(
85 new Statuses.StatusCreate(Status.State.FAILURE)
86 .withTargetUrl(Optional.of(url))
87 .withDescription(description)
88 .withContext(Optional.of(context))
89 );
90 final MkQuery request = container.take();
91 MatcherAssert.assertThat(
92 "Values are not equal",
93 request.method(),
94 Matchers.equalTo(Request.POST)
95 );
96 final JsonObject obj = Json.createReader(
97 new StringReader(request.body())
98 ).readObject();
99 MatcherAssert.assertThat(
100 "Values are not equal",
101 obj.getString(stateprop),
102 Matchers.equalTo(Status.State.FAILURE.identifier())
103 );
104 MatcherAssert.assertThat(
105 "Values are not equal",
106 obj.getString(contextprop),
107 Matchers.equalTo(context)
108 );
109 MatcherAssert.assertThat(
110 "Values are not equal",
111 obj.getString(descprop),
112 Matchers.equalTo(description)
113 );
114 MatcherAssert.assertThat(
115 "Values are not equal",
116 obj.getString(urlprop),
117 Matchers.equalTo(url)
118 );
119 } finally {
120 container.stop();
121 }
122 }
123 }