31
31
import com .cloudbees .jenkins .plugins .bitbucket .client .repository .BitbucketCloudRepository ;
32
32
import com .cloudbees .jenkins .plugins .bitbucket .endpoints .BitbucketCloudEndpoint ;
33
33
import com .cloudbees .jenkins .plugins .bitbucket .impl .util .JsonParser ;
34
+ import edu .umd .cs .findbugs .annotations .NonNull ;
34
35
import hudson .ProxyConfiguration ;
35
36
import io .jenkins .cli .shaded .org .apache .commons .lang .RandomStringUtils ;
36
37
import java .io .IOException ;
37
38
import java .io .InputStream ;
38
- import java .net .InetSocketAddress ;
39
- import java .net .Proxy ;
40
39
import java .nio .charset .StandardCharsets ;
41
40
import java .util .Date ;
42
41
import java .util .Optional ;
51
50
52
51
import static net .javacrumbs .jsonunit .assertj .JsonAssertions .assertThatJson ;
53
52
import static org .assertj .core .api .Assertions .assertThat ;
54
- import static org .mockito .ArgumentMatchers .anyString ;
55
- import static org .mockito .ArgumentMatchers .eq ;
56
- import static org .mockito .Mockito .doReturn ;
57
- import static org .mockito .Mockito .mock ;
58
53
import static org .mockito .Mockito .reset ;
54
+ import static org .mockito .Mockito .spy ;
59
55
import static org .mockito .Mockito .verify ;
60
- import static org .mockito .Mockito .when ;
61
56
62
57
class BitbucketCloudApiClientTest {
63
58
@@ -69,17 +64,13 @@ private String loadPayload(String api) throws IOException {
69
64
70
65
@ Test
71
66
@ WithJenkins
72
- void test_proxy_configurad_without_password (JenkinsRule r ) throws Exception {
73
- Proxy proxy = mock (Proxy .class );
74
- when (proxy .address ()).thenReturn (new InetSocketAddress ("proxy.lan" , 8080 ));
75
- ProxyConfiguration proxyConfiguration = mock (ProxyConfiguration .class );
76
- doReturn (proxy ).when (proxyConfiguration ).createProxy (anyString ());
77
- doReturn ("username" ).when (proxyConfiguration ).getUserName ();
67
+ void test_proxy_configurated_without_password (JenkinsRule r ) throws Exception {
68
+ ProxyConfiguration proxyConfiguration = spy (new ProxyConfiguration ("proxy.lan" , 8080 , "username" , null ));
78
69
79
70
r .jenkins .setProxy (proxyConfiguration );
80
71
BitbucketIntegrationClientFactory .getApiMockClient (BitbucketCloudEndpoint .SERVER_URL );
81
72
82
- verify (proxyConfiguration ).createProxy (eq ( " bitbucket.org") );
73
+ verify (proxyConfiguration ).createProxy ("api. bitbucket.org" );
83
74
verify (proxyConfiguration ).getUserName ();
84
75
verify (proxyConfiguration ).getSecretPassword ();
85
76
}
@@ -94,8 +85,7 @@ void verify_status_notitication_name_max_length() throws Exception {
94
85
95
86
client .postBuildStatus (status );
96
87
97
- IRequestAudit clientAudit = ((IRequestAudit ) client ).getAudit ();
98
- HttpRequestBase request = extractRequest (clientAudit );
88
+ HttpRequestBase request = extractRequest (client );
99
89
assertThat (request ).isNotNull ()
100
90
.isInstanceOf (HttpPost .class );
101
91
try (InputStream content = ((HttpPost ) request ).getEntity ().getContent ()) {
@@ -104,12 +94,17 @@ void verify_status_notitication_name_max_length() throws Exception {
104
94
}
105
95
}
106
96
107
- private HttpRequestBase extractRequest (IRequestAudit clientAudit ) {
97
+ private HttpRequestBase extractRequest (@ NonNull BitbucketApi client ) {
98
+ IRequestAudit audit = ((IRequestAudit ) client ).getAudit ();
108
99
ArgumentCaptor <HttpRequestBase > captor = ArgumentCaptor .forClass (HttpRequestBase .class );
109
- verify (clientAudit ).request (captor .capture ());
100
+ verify (audit ).request (captor .capture ());
110
101
return captor .getValue ();
111
102
}
112
103
104
+ private void resetAudit (@ NonNull BitbucketApi client ) {
105
+ reset (((IRequestAudit ) client ).getAudit ());
106
+ }
107
+
113
108
@ Test
114
109
void get_repository_parse_correctly_date_from_cloud () throws Exception {
115
110
BitbucketCloudRepository repository = JsonParser .toJava (loadPayload ("getRepository" ), BitbucketCloudRepository .class );
@@ -121,15 +116,14 @@ void get_repository_parse_correctly_date_from_cloud() throws Exception {
121
116
@ Test
122
117
void verifyUpdateWebhookURL () throws Exception {
123
118
BitbucketApi client = BitbucketIntegrationClientFactory .getApiMockClient (BitbucketCloudEndpoint .SERVER_URL );
124
- IRequestAudit audit = ((IRequestAudit ) client ).getAudit ();
125
119
Optional <? extends BitbucketWebHook > webHook = client .getWebHooks ().stream ()
126
120
.filter (h -> h .getDescription ().contains ("Jenkins" ))
127
121
.findFirst ();
128
122
assertThat (webHook ).isPresent ();
129
123
130
- reset ( audit );
124
+ resetAudit ( client );
131
125
client .updateCommitWebHook (webHook .get ());
132
- HttpRequestBase request = extractRequest (audit );
126
+ HttpRequestBase request = extractRequest (client );
133
127
assertThat (request ).isNotNull ()
134
128
.isInstanceOfSatisfying (HttpPut .class , put ->
135
129
assertThat (put .getURI ()).hasToString ("https://api.bitbucket.org/2.0/repositories/amuniz/test-repos/hooks/%7B202cf34e-7ccf-44b7-ba6b-8827a14d5324%7D" ));
0 commit comments