private void checkNoWriteAccess(Serializable id, RechnungDO rechnung, String who) { try { RechnungDO re = new RechnungDO(); int number = rechnungDao.getNextNumber(re); re.setDatum(new Date(System.currentTimeMillis())); re.setNummer(number); rechnungDao.save(re); fail("AccessException expected: " + who + " users should not have save access to invoices."); } catch (AccessException ex) { // OK } try { rechnung.setBemerkung(who); rechnungDao.update(rechnung); fail("AccessException expected: " + who + " users should not have update access to invoices."); } catch (AccessException ex) { // OK } }
rechnung1.setProjekt(initTestDB.addProjekt(null, 1, "foo")); try { rechnungDao.save(rechnung1); fail("Exception with wrong number should be thrown (no number given)."); } catch (UserException ex) { Serializable id = rechnungDao.save(rechnung1); final RechnungDO rechnung1FromDb = rechnungDao.getById(id); assertEquals(dbNumber++, rechnung1FromDb.getNummer().intValue()); rechnung2.setNummer(number); try { rechnungDao.save(rechnung2); fail("Exception with wrong number should be thrown (does already exists)."); } catch (UserException ex) { rechnung2.setProjekt(initTestDB.addProjekt(null, 1, "foo")); try { rechnungDao.save(rechnung2); fail("Exception with wrong number should be thrown (not continuously)."); } catch (UserException ex) { id = rechnungDao.save(rechnung2); final RechnungDO rechnung2FromDb = rechnungDao.getById(id); assertEquals(dbNumber++, rechnung2FromDb.getNummer().intValue()); rechnung3.setFaelligkeit(new Date(System.currentTimeMillis())); rechnung3.setProjekt(initTestDB.addProjekt(null, 1, "foo")); id = rechnungDao.save(rechnung3);
@Test public void checkAccess() { logon(TEST_FINANCE_USER); RechnungDO rechnung = new RechnungDO(); int number = rechnungDao.getNextNumber(rechnung); rechnung.setDatum(new Date(System.currentTimeMillis())); rechnung.setFaelligkeit(new Date(System.currentTimeMillis())); rechnung.setProjekt(initTestDB.addProjekt(null, 1, "foo")); rechnung.setNummer(number); rechnung.addPosition(createPosition(2, "100.50", "0.19", "test")); rechnung.addPosition(createPosition(1, "50.00", "0", "test")); assertEquals("289.19", String.valueOf(rechnung.getGrossSum().setScale(2))); Serializable id = rechnungDao.save(rechnung); dbNumber++; rechnung = rechnungDao.getById(id); logon(TEST_CONTROLLING_USER); rechnungDao.getById(id); checkNoWriteAccess(id, rechnung, "Controlling"); logon(TEST_USER); checkNoAccess(id, rechnung, "Other"); logon(TEST_PROJECT_MANAGER_USER); checkNoAccess(id, rechnung, "Project manager"); logon(TEST_ADMIN_USER); checkNoAccess(id, rechnung, "Admin "); }
rechnung1.setFaelligkeit(new Date(System.currentTimeMillis())); rechnung1.setProjekt(initTestDB.addProjekt(null, 1, "foo")); rechnungDao.save(rechnung1); rechnung2.setFaelligkeit(new Date(System.currentTimeMillis())); rechnung2.setProjekt(initTestDB.addProjekt(null, 1, "foo")); rechnungDao.save(rechnung2);