3131import com .cloudbees .jenkins .plugins .bitbucket .client .repository .BitbucketCloudRepository ;
3232import com .cloudbees .jenkins .plugins .bitbucket .endpoints .BitbucketCloudEndpoint ;
3333import com .cloudbees .jenkins .plugins .bitbucket .impl .util .JsonParser ;
34+ import edu .umd .cs .findbugs .annotations .NonNull ;
3435import hudson .ProxyConfiguration ;
3536import io .jenkins .cli .shaded .org .apache .commons .lang .RandomStringUtils ;
3637import java .io .IOException ;
3738import java .io .InputStream ;
38- import java .net .InetSocketAddress ;
39- import java .net .Proxy ;
4039import java .nio .charset .StandardCharsets ;
4140import java .util .Date ;
4241import java .util .Optional ;
5150
5251import static net .javacrumbs .jsonunit .assertj .JsonAssertions .assertThatJson ;
5352import 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 ;
5853import static org .mockito .Mockito .reset ;
54+ import static org .mockito .Mockito .spy ;
5955import static org .mockito .Mockito .verify ;
60- import static org .mockito .Mockito .when ;
6156
6257class BitbucketCloudApiClientTest {
6358
@@ -69,17 +64,13 @@ private String loadPayload(String api) throws IOException {
6964
7065 @ Test
7166 @ 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 ));
7869
7970 r .jenkins .setProxy (proxyConfiguration );
8071 BitbucketIntegrationClientFactory .getApiMockClient (BitbucketCloudEndpoint .SERVER_URL );
8172
82- verify (proxyConfiguration ).createProxy (eq ( " bitbucket.org") );
73+ verify (proxyConfiguration ).createProxy ("api. bitbucket.org" );
8374 verify (proxyConfiguration ).getUserName ();
8475 verify (proxyConfiguration ).getSecretPassword ();
8576 }
@@ -94,8 +85,7 @@ void verify_status_notitication_name_max_length() throws Exception {
9485
9586 client .postBuildStatus (status );
9687
97- IRequestAudit clientAudit = ((IRequestAudit ) client ).getAudit ();
98- HttpRequestBase request = extractRequest (clientAudit );
88+ HttpRequestBase request = extractRequest (client );
9989 assertThat (request ).isNotNull ()
10090 .isInstanceOf (HttpPost .class );
10191 try (InputStream content = ((HttpPost ) request ).getEntity ().getContent ()) {
@@ -104,12 +94,17 @@ void verify_status_notitication_name_max_length() throws Exception {
10494 }
10595 }
10696
107- private HttpRequestBase extractRequest (IRequestAudit clientAudit ) {
97+ private HttpRequestBase extractRequest (@ NonNull BitbucketApi client ) {
98+ IRequestAudit audit = ((IRequestAudit ) client ).getAudit ();
10899 ArgumentCaptor <HttpRequestBase > captor = ArgumentCaptor .forClass (HttpRequestBase .class );
109- verify (clientAudit ).request (captor .capture ());
100+ verify (audit ).request (captor .capture ());
110101 return captor .getValue ();
111102 }
112103
104+ private void resetAudit (@ NonNull BitbucketApi client ) {
105+ reset (((IRequestAudit ) client ).getAudit ());
106+ }
107+
113108 @ Test
114109 void get_repository_parse_correctly_date_from_cloud () throws Exception {
115110 BitbucketCloudRepository repository = JsonParser .toJava (loadPayload ("getRepository" ), BitbucketCloudRepository .class );
@@ -121,15 +116,14 @@ void get_repository_parse_correctly_date_from_cloud() throws Exception {
121116 @ Test
122117 void verifyUpdateWebhookURL () throws Exception {
123118 BitbucketApi client = BitbucketIntegrationClientFactory .getApiMockClient (BitbucketCloudEndpoint .SERVER_URL );
124- IRequestAudit audit = ((IRequestAudit ) client ).getAudit ();
125119 Optional <? extends BitbucketWebHook > webHook = client .getWebHooks ().stream ()
126120 .filter (h -> h .getDescription ().contains ("Jenkins" ))
127121 .findFirst ();
128122 assertThat (webHook ).isPresent ();
129123
130- reset ( audit );
124+ resetAudit ( client );
131125 client .updateCommitWebHook (webHook .get ());
132- HttpRequestBase request = extractRequest (audit );
126+ HttpRequestBase request = extractRequest (client );
133127 assertThat (request ).isNotNull ()
134128 .isInstanceOfSatisfying (HttpPut .class , put ->
135129 assertThat (put .getURI ()).hasToString ("https://api.bitbucket.org/2.0/repositories/amuniz/test-repos/hooks/%7B202cf34e-7ccf-44b7-ba6b-8827a14d5324%7D" ));
0 commit comments