Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @WebAppConfiguration
- @ContextConfiguration(classes={LibraryManagerContextConfiguration.class, WebSecurityConfig.class})
- public class AbstractIntegrationTest {
- @Autowired
- private WebApplicationContext webApplicationContext;
- @Autowired
- private JwtAuthenticationFilter jwtAuthenticationFilter;
- @Autowired
- private LoginFilter loginFilter;
- private MockMvc mockMvc;
- private static IDatabaseConnection databaseConnection;
- private static Connection connection;
- private static boolean isAfterFirstRun;
- private static Logger logger = LogManager.getLogger(AbstractIntegrationTest.class);
- @BeforeClass
- public static void createDatabase() throws Exception {
- try {
- final Properties properties = loadProperties();
- final String driver = properties.getProperty("datasource.driver");
- final String url = properties.getProperty("datasource.url");
- final String userName = properties.getProperty("datasource.username");
- final String password = properties.getProperty("datasource.password");
- final String schema = properties.getProperty("datasource.schema");
- Class.forName(driver);
- connection = DriverManager.getConnection(url, userName, password);
- databaseConnection = new HsqldbConnection(connection, schema);
- } catch (final SQLException exception) {
- throw new RuntimeException(exception.getMessage(), exception);
- } catch (final ClassNotFoundException exception) {
- throw new RuntimeException(exception.getMessage(), exception);
- }
- }
- @Before
- public void setDatabaseUp() throws Exception {
- if (!isAfterFirstRun) {
- runSQLCommands(getDataSetupFile());
- }
- runSQLCommands(getClearDatabaseFile());
- runSQLCommands(getResetSequencesFile());
- runSQLCommands(getDataFile());
- isAfterFirstRun = true;
- }
- @AfterClass
- public static void closeConnection() throws Exception {
- connection.close();
- databaseConnection.close();
- }
- protected void runSQLCommands(final String file) throws Exception {
- if (file != null) {
- final InputStream stream = getSQLInputStream(file);
- final BufferedReader databaseReader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
- int i = 1;
- String sqlStatement = null;
- while ((sqlStatement = databaseReader.readLine()) != null) {
- if (sqlStatement.startsWith("--")) {
- i++;
- continue;
- }
- final int index = sqlStatement.lastIndexOf(";");
- if (index > -1) {
- sqlStatement = sqlStatement.substring(0, index + 1);
- }
- if (sqlStatement.trim().length() != 0) {
- try {
- connection.createStatement().execute(sqlStatement);
- logger.info(sqlStatement);
- } catch (final Exception exception) {
- logger.error("Error running command on line " + i + " of file " + file + ": " + exception.getMessage());
- throw new RuntimeException(exception);
- }
- }
- i++;
- }
- }
- }
- protected IDatabaseConnection getConnection() {
- return databaseConnection;
- }
- protected static IDataSet getDataSet(final String dataset) {
- try {
- final InputSource source = new InputSource(AbstractIntegrationTest.class.getResourceAsStream(dataset));
- return new FlatXmlDataSetBuilder().build(source);
- } catch (final Exception exception) {
- throw new RuntimeException("Cannot read the dataset file " + dataset + "!", exception);
- }
- }
- private static Properties loadProperties() throws Exception {
- final InputStream stream = ClassLoader.getSystemResourceAsStream("datasource.properties");
- if (stream == null) {
- throw new FileNotFoundException("File erm.properties not found. A file named erm.properties must be present "
- + "in the src/test/resources folder of the project whose class is being tested.");
- }
- final Properties properties = new Properties();
- properties.load(stream);
- return properties;
- }
- private static InputStream getSQLInputStream(final String fileName) {
- return AbstractIntegrationTest.class.getResourceAsStream(fileName);
- }
- protected String getClearDatabaseFile() {
- return "/database/clear-database.sql";
- }
- protected String getDataSetupFile() {
- return "/database/database-setup.sql";
- }
- protected String getDataFile() {
- return "/database/data.sql";
- }
- protected String getResetSequencesFile() {
- return "/database/reset-sequences.sql";
- }
- protected void verifyDatasetForTable(final String fileName, final String tableName, final String[] ignoredColumns) throws Exception {
- assertEqualsByQuery(getDataSet("/database/datasets/" + fileName), getConnection(), "select * from " + tableName, tableName, ignoredColumns);
- }
- protected void verifyDatasetForTable(final String fileName, final String tableName, final String sqlStatement, final String[] ignoredColumns)
- throws Exception {
- printValues(tableName, sqlStatement, getConnection());
- assertEqualsByQuery(getDataSet("/database/datasets/" + fileName), getConnection(), sqlStatement, tableName, ignoredColumns);
- }
- private void printValues(final String tableName, final String query, final IDatabaseConnection conn) throws Exception {
- final ITable table = conn.createQueryTable(tableName, query);
- for (int i = 0; i < table.getRowCount(); i++) {
- System.out.print(i + 1 + " ");
- for (int j = 0; j < table.getTableMetaData().getColumns().length; j++) {
- final String column = table.getTableMetaData().getColumns()[j].getColumnName();
- System.out.print(column + ": " + table.getValue(i, column) + " ");
- }
- System.out.println();
- }
- }
- @RunWith(SpringJUnit4ClassRunner.class)
- public class AuthenticationIntegrationTest extends AbstractIntegrationTest {
- @Test
- public void shouldGetAuthorizationJwt() throws Exception {
- final String jsonCredentials = "{"
- + ""username" : "augusto","
- + ""password" : "spring""
- + "}";
- final MvcResult result = performRESTLogin(jsonCredentials);
- final MockHttpServletResponse response = result.getResponse();
- final int status = response.getStatus();
- final String jwt = response.getHeader("Authorization");
- assertThat(status, is(200));
- assertThat(jwt, notNullValue());
- }
- }
- server.contextPath=/librarymanager
- server.port: 8081
- spring.datasource.url = jdbc:mysql://localhost:3306/librarymanager
- spring.datasource.username = root
- spring.datasource.password = root
- spring.jpa.show-sql = true
- spring.jpa.hibernate.ddl-auto = create-drop
- spring.jpa.hibernate.naming.strategy = org.hibernate.cfg.ImprovedNamingStrategy
- spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
- datasource.class=org.hsqldb.jdbc.JDBCDataSource
- datasource.driver=org.hsqldb.jdbc.JDBCDriver
- datasource.url=jdbc:hsqldb:mem:librarymanager;sql.syntax_ora=true
- datasource.schema=sa
- datasource.username=sa
- datasource.password=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement