package com.smartcodeltd.jenkinsci.plugins.buildmonitor.installation; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade.StaticJenkinsAPIs; import org.junit.Test; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.*; public class BuildMonitorInstallationTest { public static final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlEPjwjG6Q3ILlr91qlSxvvys046hUrhFmc8ibz9WvWEJKVs5dS/mCnRV4QFg4w3qoCH2lzuoSNHB7tWBYQXj1ZtbDiwjnFNYw1TyZBL43m2bRYQGjpcvHAUB6u07C7mmoehpaYoFkpJbLEYEGXsKV/0bY22n00cZHwoTGl5biGVX8gvNKq604pK97jdVuBNZeXiOMXS00Yrwv8tgWeRDIUhUCO8T4rj0bBULh1Pyg/aJBsts7z5RydB+Nb5OZfAfaklVTpFld+ZHMjt0Q7VYhkMkbBD+ZFRkHvRNqg2q7wdQFScGGx7G2RstUtcIPv5Ga36fj1okDU6c2vyPHErTuwIDAQAB"; @Test public void helps_to_avoid_duplicated_stats_and_keep_jenkins_instance_anonymous() throws Exception { BuildMonitorInstallation installation = new BuildMonitorInstallation(withPublicKey(PUBLIC_KEY)); assertThat(installation.anonymousCorrelationId(), is(not(PUBLIC_KEY))); assertThat(installation.anonymousCorrelationId().length(), is(64)); // sha 256 } @Test public void only_calculates_the_correlation_hash_once() throws Exception { StaticJenkinsAPIs jenkinsAPIs = withPublicKey(PUBLIC_KEY); BuildMonitorInstallation installation = new BuildMonitorInstallation(jenkinsAPIs); installation.anonymousCorrelationId(); installation.anonymousCorrelationId(); verify(jenkinsAPIs, times(1)).encodedPublicKey(); } // -- private StaticJenkinsAPIs withPublicKey(String publicKey) { StaticJenkinsAPIs jenkins = mock(StaticJenkinsAPIs.class); when(jenkins.encodedPublicKey()).thenReturn(publicKey); return jenkins; } }