Skip to content
Snippets Groups Projects
Commit 3943688e authored by Gabriel Copat's avatar Gabriel Copat
Browse files

Added tests

parent 9e281a54
No related branches found
No related tags found
1 merge request!36Resolve "As a user I want to be able to use the application on any device e.g. iPhone, iPad, Laptop"
//package Team5.SmartTowns.Data;
//
//import org.springframework.beans.factory.annotation.Autowired;
//
//import java.util.List;
//
//public class Main {
// @Autowired
// private locationRepository locationRepository;
// List<Location> approvedNumber= locationRepository.approvedLocations();
// public static void main(String[] args) {
// for (Location loc: approvedNumber){}
//
//
// }
//}
package Team5.SmartTowns;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
@Configuration
public class DatasourceConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl("jdbc:mariadb://localhost:3306/test_towns");
dataSource.setUsername("root");
dataSource.setPassword("comsc");
return dataSource;
}
}
package Team5.SmartTowns.users;
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
class UserTests {
@Autowired
UserRepository userRepository;
@Autowired
JdbcTemplate jdbcTemplate;
@BeforeEach
public void resetUserTable(){
/*Deletes table as each test creates the table it needs for its own testing*/
jdbcTemplate.update("DELETE FROM users");
}
@Test
@DisplayName("Add User to Database")
void testAddUser() {
String testEmail = "TestEmail";
String testPassword = "Password";
String testUsername = "TestUsername";
userRepository.addUser(testUsername, testEmail, testPassword);
String email = jdbcTemplate.queryForObject("SELECT email FROM users WHERE username=?", String.class, testUsername);
String password = jdbcTemplate.queryForObject("SELECT password FROM users WHERE username=?", String.class, testUsername);
assertEquals(testPassword, password);
assertEquals(testEmail, email);
}
@Test
@DisplayName("Get all from Users")
void testGetAllUsers() {
jdbcTemplate.update("INSERT INTO users (username, password) VALUE ('TestUser1', 'admin')");
jdbcTemplate.update("INSERT INTO users (username, password) VALUE ('TestUser2', 'admin')");
jdbcTemplate.update("INSERT INTO users (username, password) VALUE ('TestUser3', 'admin')");
List<String> queryList = jdbcTemplate.queryForList("SELECT username FROM users", String.class);
List<User> users = userRepository.getAllUsers();
assertEquals(queryList.size(), users.size());
}
@Test
@DisplayName("Find if user exists")
void doesUserExist() {
jdbcTemplate.update("INSERT INTO users (username, email, password) VALUE ('UserExists', 'email@test.com', 'test')" );
assertTrue( userRepository.doesUserExist("email@test.com") );
}
@Test
@DisplayName("Find user by email")
void findUserByEmail() {
String email = "email@test.com";
jdbcTemplate.update("INSERT INTO users (username, email, password) VALUE ('UserExists', ?, 'test')",
email);
User user = userRepository.findUserByEmail(email);
assertEquals(email, user.getEmail());
}
@Test
@DisplayName("Find user by name")
void findUserByName() {
String name = "TestUser";
jdbcTemplate.update("INSERT INTO users (username, password) VALUE (?, 'test')",
name);
User user = userRepository.findUserByName(name);
assertEquals(name, user.getName());
}
}
\ No newline at end of file
spring.datasource.url=jdbc:mariadb://localhost:3306/
spring.datasource.username=root
spring.datasource.password=comsc
spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath:schema.sql
spring.sql.init.data-locations=classpath:data.sql
USE test_towns;
INSERT INTO users (username, password) VALUE ('Admin', 'admin');
INSERT INTO users (username, password) VALUE ('Hannah', 'root');
INSERT INTO users (username, password) VALUE ('Nigel', 'root');
INSERT INTO users (username, password) VALUE ('Oscar', 'root');
INSERT INTO authorities (username, authority) VALUE ('Admin', 'ADMIN');
INSERT INTO authorities (username, authority) VALUE ('Hannah', 'USER');
/* DELETES AND RECREATES DATABASE EVERY TIME THE SYSTEM IS BOOTED*/
DROP DATABASE IF EXISTS test_towns;
CREATE DATABASE IF NOT EXISTS test_towns;
USE test_towns;
/****************************************************************/
CREATE TABLE IF NOT EXISTS users (
username varchar(30) primary key NOT NULL,
id bigint auto_increment unique, /*DEPRECATED COLUMN, LEFT IN WHILE SOME OTHER FUNCTIONS STILL USE IT*/
email varchar(128),
password varchar(30) NOT NULL,
enabled boolean default true
);
CREATE TABLE IF NOT EXISTS authorities (
id bigint primary key auto_increment NOT NULL,
username varchar(30) NOT NULL ,
authority varchar(45) NOT NULL
);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment