Search in sources :

Example 1 with Operation

use of com.atlassian.stash.util.Operation in project stashbot by palantir.

the class BuildSuccessReportingServletTest method setUp.

@SuppressWarnings("unchecked")
@Before
public void setUp() throws Throwable {
    MockitoAnnotations.initMocks(this);
    Mockito.when(cpm.getJenkinsServerConfiguration(Mockito.anyString())).thenReturn(jsc);
    Mockito.when(cpm.getRepositoryConfigurationForRepository(Mockito.any(Repository.class))).thenReturn(rc);
    Mockito.when(jsc.getUrl()).thenReturn(ABSOLUTE_URL);
    Mockito.when(cpm.getPullRequestMetadata(pr)).thenReturn(prm);
    Mockito.when(repositoryService.getById(REPO_ID)).thenReturn(repo);
    Mockito.when(prs.getById(REPO_ID, PULL_REQUEST_ID)).thenReturn(pr);
    Mockito.when(pr.getId()).thenReturn(PULL_REQUEST_ID);
    Mockito.when(pr.getToRef()).thenReturn(toRef);
    Mockito.when(toRef.getRepository()).thenReturn(repo);
    Mockito.when(repo.getId()).thenReturn(REPO_ID);
    Mockito.when(repo.getSlug()).thenReturn("slug");
    Mockito.when(repo.getProject()).thenReturn(proj);
    Mockito.when(proj.getKey()).thenReturn("projectKey");
    Mockito.when(ub.getJenkinsTriggerUrl(Mockito.any(Repository.class), Mockito.any(JobType.class), Mockito.anyString(), Mockito.any(PullRequest.class))).thenReturn(ABSOLUTE_URL);
    Mockito.when(ss.impersonating(Mockito.any(StashUser.class), Mockito.anyString())).thenReturn(esc);
    Mockito.when(ss.withPermission(Mockito.any(Permission.class), Mockito.anyString())).thenReturn(esc);
    jtf = new MockJobTemplateFactory(jtm);
    jtf.generateDefaultsForRepo(repo, rc);
    // Let's use the actual operation classes here for test coverage
    Answer<Void> frobber = new Answer<Void>() {

        @Override
        public Void answer(InvocationOnMock invocation) throws Throwable {
            Operation<Void, Exception> op = (Operation<Void, Exception>) invocation.getArguments()[0];
            op.perform();
            return null;
        }
    };
    Mockito.when(esc.call(Mockito.<Operation<Void, Exception>>any())).thenAnswer(frobber);
    mockWriter = new StringWriter();
    Mockito.when(res.getWriter()).thenReturn(new PrintWriter(mockWriter));
    bsrs = new BuildSuccessReportingServlet(cpm, repositoryService, bss, prs, ub, jtm, ss, us, lf);
}
Also used : BuildSuccessReportingServlet(com.palantir.stash.stashbot.servlet.BuildSuccessReportingServlet) PullRequest(com.atlassian.stash.pull.PullRequest) Operation(com.atlassian.stash.util.Operation) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) Answer(org.mockito.stubbing.Answer) Repository(com.atlassian.stash.repository.Repository) MockJobTemplateFactory(com.palantir.stash.stashbot.mocks.MockJobTemplateFactory) JobType(com.palantir.stash.stashbot.jobtemplate.JobType) StashUser(com.atlassian.stash.user.StashUser) StringWriter(java.io.StringWriter) InvocationOnMock(org.mockito.invocation.InvocationOnMock) Permission(com.atlassian.stash.user.Permission) PrintWriter(java.io.PrintWriter) Before(org.junit.Before)

Example 2 with Operation

use of com.atlassian.stash.util.Operation in project stashbot by palantir.

the class JenkinsManager method triggerBuild.

public void triggerBuild(final Repository repo, final JobType jobType, final PullRequest pr) {
    final String username = um.getRemoteUser().getUsername();
    final StashUser su = us.findUserByNameOrEmail(username);
    es.submit(new Callable<Void>() {

        @Override
        public Void call() throws Exception {
            // TODO: See if we can do something like StateTransferringExecutorService here instead
            ss.impersonating(su, "Running as user '" + username + "' in alternate thread asynchronously").call(new Operation<Void, Exception>() {

                @Override
                public Void perform() throws Exception {
                    synchronousTriggerBuild(repo, jobType, pr);
                    return null;
                }
            });
            return null;
        }

        ;
    });
}
Also used : StashUser(com.atlassian.stash.user.StashUser) Operation(com.atlassian.stash.util.Operation) URISyntaxException(java.net.URISyntaxException) SQLException(java.sql.SQLException) HttpResponseException(org.apache.http.client.HttpResponseException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException)

Example 3 with Operation

use of com.atlassian.stash.util.Operation in project stashbot by palantir.

the class JenkinsManager method triggerBuild.

public void triggerBuild(final Repository repo, final JobType jobType, final String hashToBuild, final String buildRef) {
    final String username = um.getRemoteUser().getUsername();
    final StashUser su = us.findUserByNameOrEmail(username);
    es.submit(new Callable<Void>() {

        @Override
        public Void call() throws Exception {
            // TODO: See if we can do something like StateTransferringExecutorService here instead
            ss.impersonating(su, "Running as user '" + username + "' in alternate thread asynchronously").call(new Operation<Void, Exception>() {

                @Override
                public Void perform() throws Exception {
                    synchronousTriggerBuild(repo, jobType, hashToBuild, buildRef);
                    return null;
                }
            });
            return null;
        }

        ;
    });
}
Also used : StashUser(com.atlassian.stash.user.StashUser) Operation(com.atlassian.stash.util.Operation) URISyntaxException(java.net.URISyntaxException) SQLException(java.sql.SQLException) HttpResponseException(org.apache.http.client.HttpResponseException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

StashUser (com.atlassian.stash.user.StashUser)3 Operation (com.atlassian.stash.util.Operation)3 IOException (java.io.IOException)3 URISyntaxException (java.net.URISyntaxException)2 SQLException (java.sql.SQLException)2 ExecutionException (java.util.concurrent.ExecutionException)2 HttpResponseException (org.apache.http.client.HttpResponseException)2 PullRequest (com.atlassian.stash.pull.PullRequest)1 Repository (com.atlassian.stash.repository.Repository)1 Permission (com.atlassian.stash.user.Permission)1 JobType (com.palantir.stash.stashbot.jobtemplate.JobType)1 MockJobTemplateFactory (com.palantir.stash.stashbot.mocks.MockJobTemplateFactory)1 BuildSuccessReportingServlet (com.palantir.stash.stashbot.servlet.BuildSuccessReportingServlet)1 PrintWriter (java.io.PrintWriter)1 StringWriter (java.io.StringWriter)1 ServletException (javax.servlet.ServletException)1 Before (org.junit.Before)1 InvocationOnMock (org.mockito.invocation.InvocationOnMock)1 Answer (org.mockito.stubbing.Answer)1