package eu.dnetlib.oauth;

import eu.dnetlib.oauth.config.SpringConfiguration;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.surfnet.oaaas.config.SpringConfigTest;

import javax.inject.Inject;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class DatasourceTest extends SpringConfigTest {

    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Inject
    private DataSource dataSource;

    @Before
    public void wire() {
        assertNotNull(dataSource);

    }

    @Test
    public void connect() {
        Connection connection = null;
        try {
            log.info("Getting connection to datasource...");
            connection = dataSource.getConnection();
            DatabaseMetaData metadata = connection.getMetaData();
            log.info(metadata.getURL());

        } catch (SQLException e) {
            log.error(e.toString());

        } finally {
            try {
                connection.close();
            } catch (SQLException e) {
                log.error(e.toString());
            }
        }
    }
}
