@Before public void setUp() { MockitoAnnotations.initMocks(this); PowerMockito.mockStatic(IdeaHelper.class); when(IdeaHelper.getCurrentProject()).thenReturn(mockProject); when(mockTeamServicesSettingsModel.getTableModel()).thenReturn(mockTableModel); when(mockTeamServicesSettingsModel.getTableSelectionModel()).thenReturn(mockListSelectionModel); when(mockTeamServicesSettingsModel.getOriginalAuthType()).thenReturn(AuthTypes.DEVICE_FLOW); controller = new TeamServicesSettingsController(mockTeamServicesSettingsForm, mockTeamServicesSettingsModel); }
@Test public void testDeletePasswords_NoRowSelected() { teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.deletePasswords(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertEquals(mockServerContext_TfvcRepo, teamServicesSettingsModel.getTableModel().getServerContext(0)); assertEquals(mockServerContext_GitRepo, teamServicesSettingsModel.getTableModel().getServerContext(1)); verifyStatic(times(1)); Messages.showWarningDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_NO_ROWS_SELECTED), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE)); }
@Test public void testDeletePasswords_Cancel() { teamServicesSettingsModel.getTableSelectionModel().setSelectionInterval(0, 0); when(Messages.showYesNoDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.CANCEL); teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.deletePasswords(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertEquals(mockServerContext_TfvcRepo, teamServicesSettingsModel.getTableModel().getServerContext(0)); assertEquals(mockServerContext_GitRepo, teamServicesSettingsModel.getTableModel().getServerContext(1)); verifyStatic(times(1)); Messages.showYesNoDialog(eq(mockProject), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG)), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE)), any(Icon.class)); }
@Test public void testDeletePasswords_OK() { teamServicesSettingsModel.getTableSelectionModel().setSelectionInterval(0, 0); when(Messages.showYesNoDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.YES); teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.deletePasswords(); assertEquals(1, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(1, teamServicesSettingsModel.getTableModel().getRowCount()); assertEquals(mockServerContext_GitRepo, teamServicesSettingsModel.getTableModel().getServerContext(0)); verifyStatic(times(1)); Messages.showYesNoDialog(eq(mockProject), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG)), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE)), any(Icon.class)); }
@Test public void testUpdatePasswords_Cancel() { teamServicesSettingsModel.getTableSelectionModel().setSelectionInterval(0, 0); when(Messages.showYesNoDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.CANCEL); teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.updatePasswords(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertEquals(mockServerContext_TfvcRepo, teamServicesSettingsModel.getTableModel().getServerContext(0)); assertEquals(mockServerContext_GitRepo, teamServicesSettingsModel.getTableModel().getServerContext(1)); verifyStatic(times(1)); Messages.showYesNoDialog(eq(mockProject), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_MSG)), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE)), any(Icon.class)); }
@Test public void testUpdatePasswords_OK() { teamServicesSettingsModel.getTableSelectionModel().setSelectionInterval(0, 0); when(Messages.showYesNoDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.YES); teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.updatePasswords(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); verifyStatic(times(1)); Messages.showYesNoDialog(eq(mockProject), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_MSG)), eq(TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE)), any(Icon.class)); }
@Test public void testUpdatePasswords_NoRowSelected() { teamServicesSettingsModel.getTableModel().addServerContexts(new ArrayList<ServerContext>(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo))); teamServicesSettingsModel.updatePasswords(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); verifyStatic(times(1)); Messages.showWarningDialog(mockProject, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_NO_ROWS_SELECTED), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE)); } }
@Test(timeout = 60000) public void testSettingsSetup() throws Exception { createSettings(); verify(form).setContextTable(model.getTableModel(), model.getTableSelectionModel()); assertEquals(2, model.getTableModel().getRowCount()); assertFalse(controller.isModified()); }
@Test public void testReset() { when(AuthHelper.getAuthTypeInSettingsFile()).thenReturn(AuthTypes.DEVICE_FLOW.name()); teamServicesSettingsModel.setUpdatedAuthType(AuthTypes.CREDS); teamServicesSettingsModel.setDeleteContexts(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo)); teamServicesSettingsModel.reset(); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertFalse(teamServicesSettingsModel.isModified()); }
@Test public void testApply() { when(AuthHelper.getAuthTypeInSettingsFile()).thenReturn(AuthTypes.DEVICE_FLOW.name()); teamServicesSettingsModel.setDeleteContexts(ImmutableList.of(mockServerContext_GitRepo, mockServerContext_TfvcRepo)); teamServicesSettingsModel.setUpdatedAuthType(AuthTypes.CREDS); teamServicesSettingsModel.apply(); assertEquals(0, teamServicesSettingsModel.getTableModel().getRowCount()); assertEquals(0, teamServicesSettingsModel.getDeleteContexts().size()); assertEquals(AuthTypes.CREDS, teamServicesSettingsModel.getOriginalAuthType()); verifyStatic(times(1)); mockServerContextManager.remove("mockServerContext_GitRepo"); mockServerContextManager.remove("mockServerContext_TfvcRepo"); AuthHelper.setDeviceFlowEnvVariableFalse(); }
@Test public void testReset() { createSettings(); // do delete when(Messages.showYesNoDialog(project, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.OK); model.getTableSelectionModel().setSelectionInterval(0, 1); controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_DELETE_PASSWORD)); assertTrue(controller.isModified()); assertEquals(0, model.getTableModel().getRowCount()); assertEquals(3, ServerContextManager.getInstance().getAllServerContexts().size()); // reset controller.actionPerformed(new ActionEvent(this, 0, TeamServicesConfigurable.CMD_RESET_CHANGES)); assertFalse(controller.isModified()); assertEquals(2, model.getTableModel().getRowCount()); assertEquals(3, ServerContextManager.getInstance().getAllServerContexts().size()); }
@Test public void testLoadSettings() { when(AuthHelper.getAuthTypeInSettingsFile()).thenReturn(AuthTypes.DEVICE_FLOW.name()); // running it twice to test we clear contexts teamServicesSettingsModel.loadSettings(); assertEquals(AuthTypes.DEVICE_FLOW, teamServicesSettingsModel.getOriginalAuthType()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertFalse(teamServicesSettingsModel.isModified()); teamServicesSettingsModel.loadSettings(); assertEquals(AuthTypes.DEVICE_FLOW, teamServicesSettingsModel.getOriginalAuthType()); assertEquals(2, teamServicesSettingsModel.getTableModel().getRowCount()); assertFalse(teamServicesSettingsModel.isModified()); }
assertEquals(2, model.getTableModel().getRowCount()); verifyStatic(times(1)); Messages.showWarningDialog(project, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_NO_ROWS_SELECTED), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_UPDATE_TITLE)); controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_UPDATE_PASSWORD)); assertFalse(controller.isModified()); assertEquals(2, model.getTableModel().getRowCount()); updatedContexts = new ArrayList<ServerContext>(ServerContextManager.getInstance().getAllServerContexts()); assertTrue(updatedContexts.size() == originalContexts.size()); controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_UPDATE_PASSWORD)); assertFalse(controller.isModified()); assertEquals(2, model.getTableModel().getRowCount()); updatedContexts = new ArrayList<ServerContext>(ServerContextManager.getInstance().getAllServerContexts()); assertTrue(updatedContexts.size() == originalContexts.size());
@Test(timeout = 60000) public void testDeletePassword() throws Exception { createSettings(); // try to delete with no selection made controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_DELETE_PASSWORD)); assertFalse(controller.isModified()); assertEquals(2, model.getTableModel().getRowCount()); verifyStatic(times(1)); Messages.showWarningDialog(project, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_NO_ROWS_SELECTED), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE)); // try to delete with selection but then cancel when(Messages.showYesNoDialog(project, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.CANCEL); model.getTableSelectionModel().setSelectionInterval(0, 0); controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_DELETE_PASSWORD)); assertFalse(controller.isModified()); assertEquals(2, model.getTableModel().getRowCount()); // do delete when(Messages.showYesNoDialog(project, TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_MSG), TfPluginBundle.message(TfPluginBundle.KEY_SETTINGS_PASSWORD_MGT_DIALOG_DELETE_TITLE), Messages.getQuestionIcon())).thenReturn(Messages.OK); model.getTableSelectionModel().setSelectionInterval(0, 0); controller.actionPerformed(new ActionEvent(this, 0, TeamServicesSettingsForm.CMD_DELETE_PASSWORD)); assertTrue(controller.isModified()); assertEquals(1, model.getTableModel().getRowCount()); assertEquals(3, ServerContextManager.getInstance().getAllServerContexts().size()); // apply delete controller.actionPerformed(new ActionEvent(this, 0, TeamServicesConfigurable.CMD_APPLY_CHANGES)); assertFalse(controller.isModified()); assertEquals(1, model.getTableModel().getRowCount()); assertEquals(2, ServerContextManager.getInstance().getAllServerContexts().size()); }