package se.bjurr.prnfb.presentation;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.atlassian.bitbucket.project.Project;
import com.atlassian.bitbucket.project.ProjectService;
import com.atlassian.bitbucket.repository.Repository;
import com.atlassian.bitbucket.repository.RepositoryService;
import com.atlassian.sal.api.auth.LoginUriProvider;
import com.atlassian.sal.api.user.UserManager;
import com.atlassian.templaterenderer.TemplateRenderer;
import se.bjurr.prnfb.service.UserCheckService;
public class GlobalAdminServletTest {
@Mock private LoginUriProvider loginUriProvider;
@Mock private TemplateRenderer renderer;
@Mock private RepositoryService repositoryService;
private GlobalAdminServlet sut;
@Mock private UserCheckService userCheckService;
@Mock private UserManager userManager;
@Mock private ProjectService projectService;
@Before
public void before() {
initMocks(this);
this.sut =
new GlobalAdminServlet(
this.userManager,
this.loginUriProvider,
this.renderer,
this.repositoryService,
this.userCheckService,
this.projectService);
}
@Test
public void testGetRepository() {
assertThat(this.sut.getRepository(null).orNull()) //
.isNull();
assertThat(this.sut.getRepository("").orNull()) //
.isNull();
assertThat(this.sut.getRepository("/").orNull()) //
.isNull();
Repository repository = mock(Repository.class);
when(this.repositoryService.getBySlug("p", "r")) //
.thenReturn(repository);
assertThat(this.sut.getRepository("prnfb/admin/p/r").orNull()) //
.isSameAs(repository);
assertThat(this.sut.getRepository("some/path/prnfb/admin").orNull()) //
.isNull();
}
@Test
public void testGetProject() {
assertThat(this.sut.getProject(null).orNull()) //
.isNull();
assertThat(this.sut.getProject("").orNull()) //
.isNull();
assertThat(this.sut.getProject("/").orNull()) //
.isNull();
Project project = mock(Project.class);
when(this.projectService.getByKey("p")) //
.thenReturn(project);
assertThat(this.sut.getProject("/prnfb/admin/p").orNull()) //
.isSameAs(project);
assertThat(this.sut.getProject("asd/asd/prnfb/admin/p").orNull()) //
.isSameAs(project);
assertThat(this.sut.getProject("some/path/prnfb/admin").orNull()) //
.isNull();
}
}