diff --git a/oauth2/pom.xml b/oauth2/pom.xml
index d7b5961..feba337 100644
--- a/oauth2/pom.xml
+++ b/oauth2/pom.xml
@@ -44,7 +44,7 @@
com.h2database
h2
-
+
@@ -105,10 +105,14 @@
4.1.1
test
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
- jrmmba-usermodel
+ als-usermodel
@@ -127,7 +131,7 @@
false
- ${project.build.directory}/${project.build.finalName}.jar
+ ${project.build.directory}\${project.build.finalName}.jar
${java.version}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/SeedData.java b/oauth2/src/main/java/com/lambdaschool/usermodel/SeedData.java
index 078798a..900e2b4 100755
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/SeedData.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/SeedData.java
@@ -11,9 +11,20 @@
import com.lambdaschool.usermodel.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
-import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.Locale;
@@ -42,74 +53,74 @@ public void run(String[] args) throws Exception
// admin, data, user
ArrayList admins = new ArrayList<>();
admins.add(new UserRoles(new User(),
- r1));
+ r1));
admins.add(new UserRoles(new User(),
- r2));
+ r2));
admins.add(new UserRoles(new User(),
- r3));
+ r3));
User u1 = new User("admin",
- "password",
- "admin@lambdaschool.local",
- admins);
+ "password",
+ "admin@lambdaschool.local",
+ admins);
u1.getUseremails()
- .add(new Useremail(u1,
- "admin@email.local"));
+ .add(new Useremail(u1,
+ "admin@email.local"));
u1.getUseremails()
- .add(new Useremail(u1,
- "admin@mymail.local"));
+ .add(new Useremail(u1,
+ "admin@mymail.local"));
userService.save(u1);
// data, user
ArrayList datas = new ArrayList<>();
datas.add(new UserRoles(new User(),
- r3));
+ r3));
datas.add(new UserRoles(new User(),
- r2));
+ r2));
User u2 = new User("cinnamon",
- "1234567",
- "cinnamon@lambdaschool.local",
- datas);
+ "1234567",
+ "cinnamon@lambdaschool.local",
+ datas);
u2.getUseremails()
- .add(new Useremail(u2,
- "cinnamon@mymail.local"));
+ .add(new Useremail(u2,
+ "cinnamon@mymail.local"));
u2.getUseremails()
- .add(new Useremail(u2,
- "hops@mymail.local"));
+ .add(new Useremail(u2,
+ "hops@mymail.local"));
u2.getUseremails()
- .add(new Useremail(u2,
- "bunny@email.local"));
+ .add(new Useremail(u2,
+ "bunny@email.local"));
userService.save(u2);
// user
ArrayList users = new ArrayList<>();
users.add(new UserRoles(new User(),
- r2));
+ r2));
User u3 = new User("barnbarn",
- "ILuvM4th!",
- "barnbarn@lambdaschool.local",
- users);
+ "ILuvM4th!",
+ "barnbarn@lambdaschool.local",
+ users);
u3.getUseremails()
- .add(new Useremail(u3,
- "barnbarn@email.local"));
+ .add(new Useremail(u3,
+ "barnbarn@email.local"));
userService.save(u3);
users = new ArrayList<>();
users.add(new UserRoles(new User(),
- r2));
+ r2));
User u4 = new User("puttat",
- "password",
- "puttat@school.lambda",
- users);
+ "password",
+ "puttat@school.lambda",
+ users);
userService.save(u4);
users = new ArrayList<>();
users.add(new UserRoles(new User(),
- r2));
+ r2));
User u5 = new User("misskitty",
- "password",
- "misskitty@school.lambda",
- users);
+ "password",
+ "misskitty@school.lambda",
+ users);
userService.save(u5);
// using JavaFaker create a bunch of regular users
@@ -117,7 +128,7 @@ public void run(String[] args) throws Exception
// https://www.baeldung.com/regular-expressions-java
FakeValuesService fakeValuesService = new FakeValuesService(new Locale("en-US"),
- new RandomService());
+ new RandomService());
Faker nameFaker = new Faker(new Locale("en-US"));
for (int i = 0; i < 100; i++)
@@ -127,16 +138,16 @@ public void run(String[] args) throws Exception
users = new ArrayList<>();
users.add(new UserRoles(new User(),
- r2));
+ r2));
fakeUser = new User(nameFaker.name()
- .username(),
- "password",
- nameFaker.internet()
- .emailAddress(),
- users);
+ .username(),
+ "password",
+ nameFaker.internet()
+ .emailAddress(),
+ users);
fakeUser.getUseremails()
.add(new Useremail(fakeUser,
- fakeValuesService.bothify("????##@gmail.com")));
+ fakeValuesService.bothify("????##@gmail.com")));
userService.save(fakeUser);
}
}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/config/AuthorizationServerConfig.java b/oauth2/src/main/java/com/lambdaschool/usermodel/config/AuthorizationServerConfig.java
index 67db946..c878ed1 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/config/AuthorizationServerConfig.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/config/AuthorizationServerConfig.java
@@ -10,6 +10,8 @@
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.provider.token.TokenStore;
+// TODO AUTH 1
+
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/config/DataSourceConfig.java b/oauth2/src/main/java/com/lambdaschool/usermodel/config/DataSourceConfig.java
index c6cd34a..f351266 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/config/DataSourceConfig.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/config/DataSourceConfig.java
@@ -1,5 +1,4 @@
package com.lambdaschool.usermodel.config;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +14,8 @@
import javax.sql.DataSource;
+
+//TODO 8 db switch
@Configuration
public class DataSourceConfig
{
@@ -56,7 +57,7 @@ public DataSource dataSource()
{
logger.info("Manually shutting down system");
int exitCode = SpringApplication.exit(appContext,
- (ExitCodeGenerator) () -> 1);
+ () -> 1);
System.exit(exitCode);
}
@@ -75,11 +76,11 @@ public DataSource dataSource()
logger.info("Database URL is " + myUrlString);
return DataSourceBuilder.create()
- .username(myDBUser)
- .password(myDBPassword)
- .url(myUrlString)
- .driverClassName(myDriverClass)
- .build();
+ .username(myDBUser)
+ .password(myDBPassword)
+ .url(myUrlString)
+ .driverClassName(myDriverClass)
+ .build();
}
@Bean(name = "jdbcCustom")
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/config/H2ServerConfiguration.java b/oauth2/src/main/java/com/lambdaschool/usermodel/config/H2ServerConfiguration.java
index 17e48f3..69f9c9f 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/config/H2ServerConfiguration.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/config/H2ServerConfiguration.java
@@ -1,5 +1,6 @@
package com.lambdaschool.usermodel.config;
+
import org.h2.tools.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/config/ResourceServerConfig.java b/oauth2/src/main/java/com/lambdaschool/usermodel/config/ResourceServerConfig.java
index c86f3c2..3772881 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/config/ResourceServerConfig.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/config/ResourceServerConfig.java
@@ -7,6 +7,8 @@
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler;
+//TODO AUTH 6
+
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/config/SecurityConfig.java b/oauth2/src/main/java/com/lambdaschool/usermodel/config/SecurityConfig.java
index 99e0ec5..3fad2e6 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/config/SecurityConfig.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/config/SecurityConfig.java
@@ -16,11 +16,15 @@
import javax.annotation.Resource;
+
+//TODO AUTH 2
+
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
+
@Resource(name = "securityUserService")
private UserDetailsService userDetailsService;
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/AuthorController.java b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/AuthorController.java
new file mode 100644
index 0000000..604b54a
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/AuthorController.java
@@ -0,0 +1,33 @@
+package com.lambdaschool.usermodel.controllers;
+
+import com.lambdaschool.usermodel.handlers.RestExceptionHandler;
+import com.lambdaschool.usermodel.logging.Loggable;
+import com.lambdaschool.usermodel.services.AuthorService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping(value = "/authors")
+@Loggable
+public class AuthorController {
+ private static final Logger logger = LoggerFactory.getLogger(RestExceptionHandler.class);
+ @Autowired
+ private AuthorService authorService;
+
+ // http://localhost:2021/authors/authors
+ @GetMapping(value = "/authors", produces = {"application/json"})
+ public ResponseEntity> listAllAuthors(HttpServletRequest request)
+ {
+ logger.trace(request.getMethod()
+ .toUpperCase() + " " + request.getRequestURI() + " accessed");
+ return new ResponseEntity<>(authorService.findAll(), HttpStatus.OK);
+ }
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/BookController.java b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/BookController.java
new file mode 100644
index 0000000..8a27f87
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/BookController.java
@@ -0,0 +1,53 @@
+package com.lambdaschool.usermodel.controllers;
+
+import com.lambdaschool.usermodel.models.Book;
+import com.lambdaschool.usermodel.services.BookService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@RestController
+@RequestMapping(value = "/book")
+public class BookController {
+
+ @Autowired
+ private BookService bookService;
+
+ private static final Logger logger = LoggerFactory.getLogger(BookController.class);
+
+ // http://localhost:2021/book/books
+ @GetMapping(value = "/books", produces = "application/json")
+ ResponseEntity> getBooks(){
+ logger.info("books/books Accessed");
+ List books = bookService.findAll();
+ return new ResponseEntity<>(books, HttpStatus.OK);
+ }
+
+ // http://localhost:2021/books/books/1
+ @PutMapping(value = "/books/{id}", consumes = {"application/json"})
+ public ResponseEntity> updateBookById(HttpServletRequest request, @RequestBody Book book, @PathVariable long id) {
+ logger.info(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
+ bookService.update(id, book);
+ return new ResponseEntity<>(HttpStatus.OK);
+ }
+
+ @PostMapping(value = "/books/{bookid}/authors/{authorid}", consumes = {"application/json"})
+ public ResponseEntity postBookAuthorById(HttpServletRequest request, @PathVariable long bookid, @PathVariable Book authorid) {
+ logger.info(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
+ bookService.update(bookid, authorid);
+ return new ResponseEntity(HttpStatus.CREATED);
+ }
+
+ @DeleteMapping(value = "/books/{id}")
+ public ResponseEntity> deleteBook(HttpServletRequest request, @PathVariable long id) {
+ logger.info(request.getMethod().toUpperCase() + " " + request.getRequestURI() + " accessed");
+ bookService.delete(id);
+ return new ResponseEntity<>(HttpStatus.OK);
+ }
+}
\ No newline at end of file
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/LogoutController.java b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/LogoutController.java
index f2849ae..3f08014 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/LogoutController.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/LogoutController.java
@@ -13,7 +13,7 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import javax.servlet.http.HttpServletRequest;
-
+//TODO AUTH 7 this is to logout
@Loggable
@Controller
@Api(tags = {"LogoutEndpoint"})
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/OpenController.java b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/OpenController.java
index d58c2c2..3131e63 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/OpenController.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/controllers/OpenController.java
@@ -25,6 +25,8 @@
import java.util.ArrayList;
import java.util.List;
+
+// TODO CU 1
@Loggable
@RestController
@Api(tags = {"OpenEndpoint"})
@@ -80,7 +82,7 @@ public ResponseEntity> addNewUser(HttpServletRequest httpServletRequest,
newuser.setUsername(newminuser.getUsername());
newuser.setPassword(newminuser.getPassword());
newuser.setPrimaryemail(newminuser.getPrimaryemail());
-
+//TODO CU 1a (auto defaults to user)(requires model UserMinimum)
ArrayList newRoles = new ArrayList<>();
newRoles.add(new UserRoles(newuser,
roleService.findByName("user")));
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/Author.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Author.java
new file mode 100644
index 0000000..ad895c4
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Author.java
@@ -0,0 +1,72 @@
+package com.lambdaschool.usermodel.models;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.lambdaschool.usermodel.logging.Loggable;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Loggable
+@Entity
+@Table(name = "author")
+public class Author extends Auditable{
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long authorid;
+ private String fname;
+ private String lname;
+
+ // @ManyToMany(mappedBy = "authors", cascade = CascadeType.ALL)
+ // @JsonIgnoreProperties(value = "authors")
+ // private List books = new ArrayList<>();
+
+ @OneToMany(mappedBy = "author", cascade = CascadeType.ALL, orphanRemoval = true)
+ @JsonIgnoreProperties("author")
+ private List writer = new ArrayList<>();
+
+ public Author() {}
+
+ public Author(String fname, String lname) {
+ this.fname = fname;
+ this.lname = lname;
+ }
+
+ public long getBookid() {
+ return authorid;
+ }
+
+ public void setBookid(long bookid) {
+ this.authorid = bookid;
+ }
+
+ public String getFname() {
+ return fname;
+ }
+
+ public void setFname(String fname) {
+ this.fname = fname;
+ }
+
+ public String getLname() {
+ return lname;
+ }
+
+ public List getWriter() {
+ return writer;
+ }
+
+ public void setWriter(List writer) {
+ this.writer = writer;
+ }
+
+
+
+
+ public void setLname(String lname) {
+ this.lname = lname;
+ }
+
+
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/Book.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Book.java
new file mode 100644
index 0000000..6840761
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Book.java
@@ -0,0 +1,101 @@
+package com.lambdaschool.usermodel.models;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.lambdaschool.usermodel.logging.Loggable;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Loggable
+@Entity
+@Table(name = "book")
+public class Book extends Auditable {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long bookid;
+
+ private String title;
+ private String ISBN;
+ @Column(nullable = true)
+ private int copy;
+
+ // @ManyToMany
+ // @JsonIgnoreProperties("books")
+ // private List authors = new ArrayList<>();
+
+ @ManyToOne
+ @JoinColumn(name = "sectionid")
+ @JsonIgnoreProperties("books")
+ private Section section;
+
+ @OneToMany(mappedBy = "book", cascade = CascadeType.ALL, orphanRemoval = true)
+ @JsonIgnoreProperties("book")
+ private List writers = new ArrayList<>();
+
+
+ public Book(){}
+
+ public Book(String title, String ISBN, int copy,Section section) {
+ this.title = title;
+ this.ISBN = ISBN;
+ this.copy = copy;
+ this.section = section;
+ }
+// public List getAuthors() {
+// return authors;
+// }
+
+// public void setAuthors(List authors) {
+// this.authors = authors;
+// }
+
+ public Section getSection() {
+ return section;
+ }
+
+ public void setSection(Section section) {
+ this.section = section;
+ }
+
+ public List getWriters() {
+ return writers;
+ }
+
+ public void setWriters(List writers) {
+ this.writers = writers;
+ }
+
+ public long getBookid() {
+ return bookid;
+ }
+
+ public void setBookid(long bookid) {
+ this.bookid = bookid;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getISBN() {
+ return ISBN;
+ }
+
+ public void setISBN(String ISBN) {
+ this.ISBN = ISBN;
+ }
+
+ public int getCopy() {
+ return this.copy;
+ }
+
+ public void setCopy(int copy) {
+ this.copy = copy;
+ }
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/Section.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Section.java
new file mode 100644
index 0000000..97ff380
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Section.java
@@ -0,0 +1,53 @@
+package com.lambdaschool.usermodel.models;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+@Table(name = "section")
+public class Section extends Auditable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long sectionid;
+
+ @Column(nullable = false, unique = true)
+ private String name;
+
+ @OneToMany(mappedBy = "section", cascade = CascadeType.ALL)
+ @JsonIgnoreProperties("section")
+ private List books = new ArrayList<>();
+
+ public Section() {
+ }
+
+ public Section(String sectionname) {
+ this.name = sectionname;
+ }
+
+ public long getSectionid() {
+ return sectionid;
+ }
+
+ public void setSectionid(long sectionid) {
+ this.sectionid = sectionid;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List getBooks() {
+ return books;
+ }
+
+ public void setBooks(List books) {
+ this.books = books;
+ }
+}
\ No newline at end of file
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/User.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/User.java
index d79db41..d32d2e9 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/models/User.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/User.java
@@ -130,13 +130,13 @@ public String getPassword()
{
return password;
}
-
+//TODO AUTH 5 ENCRYPT THE PASSWORD
public void setPassword(String password)
{
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
this.password = passwordEncoder.encode(password);
}
-
+//TODO AUTH 6 NON ENCODED
public void setPasswordNotEncrypt(String password)
{
this.password = password;
@@ -162,6 +162,8 @@ public void setUseremails(List useremails)
this.useremails = useremails;
}
+ //TODO AUTH 4 SimpleGrantAuthority
+
@JsonIgnore
public List getAuthority()
{
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/UserMinimum.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/UserMinimum.java
index 370d5d1..1c62804 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/models/UserMinimum.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/UserMinimum.java
@@ -2,6 +2,8 @@
import com.lambdaschool.usermodel.logging.Loggable;
+//TODO CU 2 the model
+
@Loggable
public class UserMinimum
{
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/models/Wrote.java b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Wrote.java
new file mode 100644
index 0000000..d76bd40
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/models/Wrote.java
@@ -0,0 +1,62 @@
+package com.lambdaschool.usermodel.models;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Objects;
+
+@Entity
+@Table(name = "wrote")
+public class Wrote extends Auditable implements Serializable {
+ @Id
+ @ManyToOne
+ @JoinColumn(name = "bookid")
+ @JsonIgnoreProperties("writers")
+ private Book book;
+
+ @Id
+ @ManyToOne
+ @JoinColumn(name = "authorid")
+ @JsonIgnoreProperties("writers")
+ private Author author;
+
+ public Wrote() {
+ }
+
+ public Wrote(Book book, Author author) {
+ this.book = book;
+ this.author = author;
+ }
+
+ public Book getBook() {
+ return book;
+ }
+
+ public void setBook(Book book) {
+ this.book = book;
+ }
+
+ public Author getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(Author author) {
+ this.author = author;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof Wrote)) return false;
+ Wrote wrote = (Wrote) o;
+ return Objects.equals(getBook(), wrote.getBook()) &&
+ Objects.equals(getAuthor(), wrote.getAuthor());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getBook(), getAuthor());
+ }
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/repository/AuthorRepo.java b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/AuthorRepo.java
new file mode 100644
index 0000000..a53dce4
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/AuthorRepo.java
@@ -0,0 +1,9 @@
+package com.lambdaschool.usermodel.repository;
+
+import com.lambdaschool.usermodel.models.Author;
+import org.springframework.data.repository.CrudRepository;
+
+public interface AuthorRepo extends CrudRepository {
+
+
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/repository/BookRepo.java b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/BookRepo.java
new file mode 100644
index 0000000..2d54c83
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/BookRepo.java
@@ -0,0 +1,7 @@
+package com.lambdaschool.usermodel.repository;
+
+import com.lambdaschool.usermodel.models.Book;
+import org.springframework.data.repository.CrudRepository;
+
+public interface BookRepo extends CrudRepository {
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/repository/SectionRepo.java b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/SectionRepo.java
new file mode 100644
index 0000000..5be32a5
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/repository/SectionRepo.java
@@ -0,0 +1,9 @@
+package com.lambdaschool.usermodel.repository;
+
+import com.lambdaschool.usermodel.models.Section;
+import org.springframework.data.repository.CrudRepository;
+
+public interface SectionRepo extends CrudRepository {
+ Section findByNameIgnoreCase(String name);
+
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorService.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorService.java
new file mode 100644
index 0000000..40def41
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorService.java
@@ -0,0 +1,17 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.models.Author;
+
+import java.util.List;
+
+public interface AuthorService {
+ List findAll();
+
+ Author findAuthorById(long id);
+
+ void delete(long id);
+
+ Author save(Author author);
+
+ Author update(long id, Author author);
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorServiceImpl.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorServiceImpl.java
new file mode 100644
index 0000000..305aecd
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/AuthorServiceImpl.java
@@ -0,0 +1,62 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.exceptions.ResourceNotFoundException;
+import com.lambdaschool.usermodel.logging.Loggable;
+import com.lambdaschool.usermodel.models.Author;
+import com.lambdaschool.usermodel.repository.AuthorRepo;
+import com.lambdaschool.usermodel.repository.BookRepo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Loggable
+@Service(value = "authorService")
+public class AuthorServiceImpl implements AuthorService {
+
+
+ @Autowired
+ AuthorRepo authorRepo;
+ @Autowired
+ BookRepo bookRepo;
+
+ @Override
+ public List findAll() {
+ List list = new ArrayList<>();
+ authorRepo.findAll().iterator().forEachRemaining(list::add);
+ return list;
+ }
+
+ @Override
+ public Author findAuthorById(long id) {
+ return authorRepo.findById(id).orElseThrow( () -> new ResourceNotFoundException("could not find an author"));
+ }
+
+ @Override
+ public void delete(long id) {
+ authorRepo.findById(id).orElseThrow(() -> new ResourceNotFoundException("nothing to delete"));
+ authorRepo.deleteById(id);
+ }
+
+
+ @Override
+ public Author save(Author author) {
+ Author newAuthor = new Author();
+ newAuthor.setFname(author.getFname());
+ newAuthor.setLname(author.getLname());
+ if (author.getWriter().size() > 0) throw new ResourceNotFoundException("no author found");
+ return authorRepo.save(author);
+ }
+
+ @Override
+ public Author update(long id, Author author) {
+ Author currentAuthor = findAuthorById(id);
+ currentAuthor.setFname(author.getFname());
+ currentAuthor.setLname(author.getLname());
+ if (author.getWriter().size() > 0) throw new ResourceNotFoundException("no author found");
+ return authorRepo.save(author);
+ }
+}
+
+
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookService.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookService.java
new file mode 100644
index 0000000..fb09d84
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookService.java
@@ -0,0 +1,19 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.models.Book;
+
+import java.util.List;
+
+public interface BookService {
+
+ List findAll();
+
+ Book findBookById(long id);
+
+ void delete(long id);
+
+ Book save(Book book);
+
+ Book update(long id, Book book);
+
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookServiceImpl.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookServiceImpl.java
new file mode 100644
index 0000000..bdc9055
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/BookServiceImpl.java
@@ -0,0 +1,63 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.exceptions.ResourceNotFoundException;
+import com.lambdaschool.usermodel.models.Book;
+import com.lambdaschool.usermodel.repository.AuthorRepo;
+import com.lambdaschool.usermodel.repository.BookRepo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+@Service(value = "bookService")
+public class BookServiceImpl implements BookService {
+
+ @Autowired
+ private BookRepo bookRepo;
+ @Autowired
+ private AuthorRepo authorRepo;
+
+ @Override
+ public List findAll() {
+ List list = new ArrayList<>();
+ bookRepo.findAll().iterator().forEachRemaining(list::add);
+ return list;
+ }
+
+ @Override
+ public Book findBookById(long id) {
+ return bookRepo.findById(id).orElseThrow(()-> new ResourceNotFoundException("nothing to find by that id"));
+
+ }
+
+ @Override
+ public void delete(long id) {
+ bookRepo.findById(id).orElseThrow(() -> new ResourceNotFoundException("nothing to delete"));
+ bookRepo.deleteById(id);
+ }
+
+ @Override
+ public Book save(Book book) {
+ Book newBook = new Book();
+ newBook.setTitle(book.getTitle());
+ newBook.setISBN(book.getISBN());
+ newBook.setCopy(book.getCopy());
+ return bookRepo.save(book);
+ }
+
+ @Override
+ public Book update(long id, Book book) {
+ Book currentBook = findBookById(id);
+ if (book.getTitle() != null) {
+ currentBook.setTitle(book.getTitle());
+ }
+ if (book.getISBN() != null) {
+ currentBook.setISBN(book.getISBN());
+ }
+
+ currentBook.getCopy();
+
+ return bookRepo.save(book);
+ }
+
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionService.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionService.java
new file mode 100644
index 0000000..48d264b
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionService.java
@@ -0,0 +1,21 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.models.Section;
+
+import java.util.List;
+
+public interface SectionService
+{
+ List findAll();
+
+ Section findSectionById(long id);
+
+ void delete(long id);
+
+ Section save(Section section);
+
+ Section findByName(String name);
+
+ Section update(long id,
+ Section section);
+}
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionServiceImpl.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionServiceImpl.java
new file mode 100644
index 0000000..199fdb9
--- /dev/null
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SectionServiceImpl.java
@@ -0,0 +1,97 @@
+package com.lambdaschool.usermodel.services;
+
+import com.lambdaschool.usermodel.exceptions.ResourceFoundException;
+import com.lambdaschool.usermodel.exceptions.ResourceNotFoundException;
+import com.lambdaschool.usermodel.logging.Loggable;
+import com.lambdaschool.usermodel.models.Section;
+import com.lambdaschool.usermodel.repository.AuthorRepo;
+import com.lambdaschool.usermodel.repository.SectionRepo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Loggable
+@Service(value = "sectionService")
+public class SectionServiceImpl implements SectionService
+{
+ @Autowired
+ SectionRepo sectionRepo;
+
+ @Autowired
+ AuthorRepo authorRepo;
+
+ @Autowired
+ UserAuditing userAuditing;
+
+ @Override
+ public List findAll()
+ {
+ List list = new ArrayList<>();
+ sectionRepo.findAll()
+ .iterator()
+ .forEachRemaining(list::add);
+ return list;
+ }
+
+
+ @Override
+ public Section findSectionById(long id)
+ {
+ return sectionRepo.findById(id)
+ .orElseThrow(() -> new ResourceNotFoundException("Section id " + id + " not found!"));
+ }
+
+ @Override
+ public Section findByName(String name)
+ {
+ Section rr = sectionRepo.findByNameIgnoreCase(name);
+
+ if (rr != null)
+ {
+ return rr;
+ } else
+ {
+ throw new ResourceNotFoundException(name);
+ }
+ }
+
+ @Transactional
+ @Override
+ public void delete(long id)
+ {
+ sectionRepo.findById(id)
+ .orElseThrow(() -> new ResourceNotFoundException("Sction id " + id + " not found!"));
+ sectionRepo.deleteById(id);
+ }
+
+
+ @Transactional
+ @Override
+ public Section update(long id,
+ Section section) {
+ if (section.getName() == null) {
+ throw new ResourceNotFoundException("No section name found to update!");
+ }
+ return section;
+ }
+
+
+ @Transactional
+ @Override
+ public Section save(Section section)
+ {
+ Section newSection = new Section();
+ newSection.setName(section.getName());
+ if (section.getBooks()
+ .size() > 0)
+ {
+ throw new ResourceFoundException("User Roles are not updated through Role. See endpoint POST: users/user/{userid}/role/{roleid}");
+ }
+
+ return sectionRepo.save(section);
+ }
+}
+
diff --git a/oauth2/src/main/java/com/lambdaschool/usermodel/services/SecurityUserServiceImpl.java b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SecurityUserServiceImpl.java
index 7dae64d..e5cad28 100644
--- a/oauth2/src/main/java/com/lambdaschool/usermodel/services/SecurityUserServiceImpl.java
+++ b/oauth2/src/main/java/com/lambdaschool/usermodel/services/SecurityUserServiceImpl.java
@@ -10,6 +10,8 @@
import javax.transaction.Transactional;
+// TODO AUTH 3 (helps logining in)
+
@Service(value = "securityUserService")
public class SecurityUserServiceImpl implements UserDetailsService
{
diff --git a/oauth2/src/main/resources/application.properties b/oauth2/src/main/resources/application.properties
index e96fd61..6b8a1ac 100644
--- a/oauth2/src/main/resources/application.properties
+++ b/oauth2/src/main/resources/application.properties
@@ -2,8 +2,8 @@
# for a list of application.properties
# Environment Variables Needed for PostgreSQL database
# Which db to run
-local.run.db=H2
-# local.run.db=POSTGRESQL
+#local.run.db=H2
+local.run.db=POSTGRESQL
# MYDBHOST
# MYDBNAME
# MYDBUSER
@@ -15,9 +15,10 @@ local.run.db=H2
# heroku config -a jrmmba-oauthmin
# postgres://rrwzjxlkniayov:83e8dc9dc5a3c3a30e40dde8fb62941da11030b3953709f5c8f808690e776c71@ec2-54-243-241-62.compute-1.amazonaws.com:5432/d7bl8dlv2l83jj
# postgres://bzhxqmxdgwigkw:611e5353ffd763b09aed8fad07d243e9bbf44e13f8f542330e3b862a1df47c92@ec2-54-221-243-211.compute-1.amazonaws.com:5432/d1blvk8nmshe0v
-# postgres://cdtpdlmrduoyqv:4958b9a3ba0533fa4fae763ac284bea71ea29f6955b9e36896740bed23289175@ec2-23-21-94-99.compute-1.amazonaws.com:5432/d37hecggdrqi5s
-# posgress://username :password @url host :5432/dbname
-server.port=${PORT:2019}
+# postgres://bgqdsfkwiafiqv:237e3deefb862a3a27a60419c9feb82015e7e4bd8d256f4b4bfd21a18a01a97e@ec2-107-21-98-89.compute-1.amazonaws.com:5432/d4mg9mi2871qnl\
+# posgress://username :password @url host :5432/dbname
+server.port=${PORT:2021}
+# Begin h2 configuration
# Begin h2 configuration
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
@@ -42,5 +43,9 @@ spring.jpa.open-in-view=true
# Shows the generated and custom SQL but does hurt performance and the logs get full fast
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
-# Turns off Spring Boot automatic exception handling
-server.error.whitelabel.enabled=false
+# Turns off Spring Boot automatic excepti
+
+management.endpoints.web.exposure.include=*
+management.endpoint.health.show-details=always
+
+spring.data.web.pageable.one-indexed-parameters=true
diff --git a/oauth2/src/main/resources/data.sql b/oauth2/src/main/resources/data.sql
new file mode 100644
index 0000000..5bba40f
--- /dev/null
+++ b/oauth2/src/main/resources/data.sql
@@ -0,0 +1,29 @@
+
+INSERT INTO section (sectionid, name, created_by, created_date, last_modified_by, last_modified_date) VALUES (1, 'Fiction', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO section (sectionid, name, created_by, created_date, last_modified_by, last_modified_date) VALUES (2, 'Technology', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO section (sectionid, name, created_by, created_date, last_modified_by, last_modified_date) VALUES (3, 'Travel', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO section (sectionid, name, created_by, created_date, last_modified_by, last_modified_date) VALUES (4, 'Business', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO section (sectionid, name, created_by, created_date, last_modified_by, last_modified_date) VALUES (5, 'Religion', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (1, 'John', 'Mitchell', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (2, 'Dan', 'Brown', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (3, 'Jerry', 'Poe', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (4, 'Wells', 'Teague', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (5, 'George', 'Gallinger', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO author (authorid, fname, lname, created_by, created_date, last_modified_by, last_modified_date) VALUES (6, 'Ian', 'Stewart', 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+
+INSERT INTO book (bookid, title, ISBN, copy, sectionid, created_by, created_date, last_modified_by, last_modified_date) VALUES (1, 'Flatterland', '9780738206752', 2001, 1, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO book (bookid, title, ISBN, copy, sectionid, created_by, created_date, last_modified_by, last_modified_date) VALUES (2, 'Digital Fortess', '9788489367012', 2007, 1, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO book (bookid, title, ISBN, copy, sectionid, created_by, created_date, last_modified_by, last_modified_date) VALUES (3, 'The Da Vinci Code', '9780307474278', 2009, 1, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO book (bookid, title, ISBN, copy, sectionid, created_by, created_date, last_modified_by, last_modified_date) VALUES (4, 'Essentials of Finance', '1314241651234', 0, 4, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO book (bookid, title, ISBN, copy, sectionid, created_by, created_date, last_modified_by, last_modified_date) VALUES (5, 'Calling Texas Home', '1885171382134', 2000, 3, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (1, 6, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (2, 2, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (3, 2, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (4, 5, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (4, 3, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+INSERT INTO wrote (bookid, authorid, created_by, created_date, last_modified_by, last_modified_date) VALUES (5, 4, 'SYSTEM', CURRENT_TIMESTAMP, 'SYSTEM', CURRENT_TIMESTAMP);
+
+alter sequence hibernate_sequence restart with 25;
+
diff --git a/oauth2/src/main/resources/logback-spring.xml b/oauth2/src/main/resources/logback-spring.xml
index df282be..e775e52 100644
--- a/oauth2/src/main/resources/logback-spring.xml
+++ b/oauth2/src/main/resources/logback-spring.xml
@@ -48,35 +48,35 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/oauth2/src/test/java/com/lambdaschool/usermodel/SeedData.java b/oauth2/src/test/java/com/lambdaschool/usermodel/SeedData.java
deleted file mode 100755
index 3dc6e13..0000000
--- a/oauth2/src/test/java/com/lambdaschool/usermodel/SeedData.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.lambdaschool.usermodel;
-
-import com.lambdaschool.usermodel.models.Role;
-import com.lambdaschool.usermodel.models.User;
-import com.lambdaschool.usermodel.models.UserRoles;
-import com.lambdaschool.usermodel.models.Useremail;
-import com.lambdaschool.usermodel.services.RoleService;
-import com.lambdaschool.usermodel.services.UserService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-
-@Transactional
-@Component
-public class SeedData implements CommandLineRunner
-{
- @Autowired
- RoleService roleService;
-
- @Autowired
- UserService userService;
-
-
- @Override
- public void run(String[] args) throws Exception
- {
- Role r1 = new Role("admin");
- Role r2 = new Role("user");
- Role r3 = new Role("data");
-
- roleService.save(r1);
- roleService.save(r2);
- roleService.save(r3);
-
- // admin, data, user
- ArrayList admins = new ArrayList<>();
- admins.add(new UserRoles(new User(),
- r1));
- admins.add(new UserRoles(new User(),
- r2));
- admins.add(new UserRoles(new User(),
- r3));
- User u1 = new User("admin",
- "ILuvM4th!",
- "admin@lambdaschool.local",
- admins);
- u1.getUseremails()
- .add(new Useremail(u1,
- "admin@email.local"));
- u1.getUseremails()
- .add(new Useremail(u1,
- "admin@mymail.local"));
- u1 = userService.save(u1);
-
- // data, user
- ArrayList datas = new ArrayList<>();
- datas.add(new UserRoles(new User(),
- r3));
- datas.add(new UserRoles(new User(),
- r2));
- User u2 = new User("cinnamon",
- "1234567",
- "cinnamon@lambdaschool.local",
- datas);
- u2.getUseremails()
- .add(new Useremail(u2,
- "cinnamon@mymail.local"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "hops@mymail.local"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "bunny@email.local"));
- u2 = userService.save(u2);
-
- // user
- ArrayList users = new ArrayList<>();
- users.add(new UserRoles(new User(),
- r1));
- User u3 = new User("testbarn",
- "ILuvM4th!",
- "testbarn@school.lambda",
- users);
- u3.getUseremails()
- .add(new Useremail(u3,
- "barnbarn@email.local"));
- u3 = userService.save(u3);
-
- users = new ArrayList<>();
- users.add(new UserRoles(new User(),
- r2));
- User u4 = new User("testcat",
- "password",
- "testcat@school.lambda",
- users);
- u4 = userService.save(u4);
-
- users = new ArrayList<>();
- users.add(new UserRoles(new User(),
- r2));
- User u5 = new User("testdog",
- "password",
- "testdog@school.lambda",
- users);
- u5 = userService.save(u5);
-
- System.out.println("\n*** Seed Data ***");
- System.out.println(u1);
- System.out.println(u2);
- System.out.println(u3);
- System.out.println(u4);
- System.out.println(u5);
- System.out.println("*** Seed Data ***\n");
- }
-}
\ No newline at end of file
diff --git a/oauth2/src/test/java/com/lambdaschool/usermodel/UserModelApplication.java b/oauth2/src/test/java/com/lambdaschool/usermodel/UserModelApplication.java
deleted file mode 100644
index c10ea4d..0000000
--- a/oauth2/src/test/java/com/lambdaschool/usermodel/UserModelApplication.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.lambdaschool.usermodel;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ApplicationContext;
-import org.springframework.web.servlet.DispatcherServlet;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
-@EnableWebMvc
-// @EnableJpaAuditing
-@SpringBootApplication
-public class UserModelApplication
-{
- private static final Logger logger = LoggerFactory.getLogger(com.lambdaschool.usermodel.UserModelApplication.class);
-
-
- public static void main(String[] args)
- {
- ApplicationContext ctx = SpringApplication.run(com.lambdaschool.usermodel.UserModelApplication.class,
- args);
-
- DispatcherServlet dispatcherServlet = (DispatcherServlet) ctx.getBean("dispatcherServlet");
- dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
- }
-
-}
diff --git a/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/AuthorControllerTest.java b/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/AuthorControllerTest.java
new file mode 100644
index 0000000..f5d9230
--- /dev/null
+++ b/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/AuthorControllerTest.java
@@ -0,0 +1,12 @@
+package com.lambdaschool.usermodel.controllers;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class AuthorControllerTest {
+
+ @Test
+ public void listAllAuthors() {
+ }
+}
\ No newline at end of file
diff --git a/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/BookControllerTest.java b/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/BookControllerTest.java
new file mode 100644
index 0000000..7e49a6d
--- /dev/null
+++ b/oauth2/src/test/java/com/lambdaschool/usermodel/controllers/BookControllerTest.java
@@ -0,0 +1,28 @@
+package com.lambdaschool.usermodel.controllers;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class BookControllerTest {
+
+ @Test
+ public void getBooks() {
+ }
+
+ @Test
+ public void testGetBooks() {
+ }
+
+ @Test
+ public void updateBookById() {
+ }
+
+ @Test
+ public void postBookAuthorById() {
+ }
+
+ @Test
+ public void deleteBook() {
+ }
+}
\ No newline at end of file
diff --git a/oauth2/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTest.java b/oauth2/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTest.java
deleted file mode 100644
index 77ac21c..0000000
--- a/oauth2/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTest.java
+++ /dev/null
@@ -1,336 +0,0 @@
-package com.lambdaschool.usermodel.services;
-
-import com.lambdaschool.usermodel.UserModelApplication;
-import com.lambdaschool.usermodel.exceptions.ResourceFoundException;
-import com.lambdaschool.usermodel.exceptions.ResourceNotFoundException;
-import com.lambdaschool.usermodel.models.Role;
-import com.lambdaschool.usermodel.models.User;
-import com.lambdaschool.usermodel.models.UserRoles;
-import com.lambdaschool.usermodel.models.Useremail;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.mockito.MockitoAnnotations;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.security.test.context.support.WithUserDetails;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-
-import static junit.framework.TestCase.assertEquals;
-
-/**
- * I am testing UserServiceImpl so want 100% in UserServiceImpl
- */
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = UserModelApplication.class)
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class UserServiceImplUnitTest
-{
- @Autowired
- private UserService userService;
-
- @Before
- public void setUp() throws Exception
- {
- MockitoAnnotations.initMocks(this);
- }
-
- @After
- public void tearDown() throws Exception
- {
- }
-
- @Test
- public void B_findUserById()
- {
- assertEquals("admin",
- userService.findUserById(4)
- .getUsername());
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void BA_findUserByIdNotFound()
- {
- assertEquals("admin",
- userService.findUserById(10)
- .getUsername());
- }
-
- @Test
- public void C_findAll()
- {
- assertEquals(5,
- userService.findAll(Pageable.unpaged())
- .size());
- }
-
- @Test
- public void D_delete()
- {
- userService.delete(13);
- assertEquals(4,
- userService.findAll(Pageable.unpaged())
- .size());
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void DA_notFoundDelete()
- {
- userService.delete(100);
- assertEquals(4,
- userService.findAll(Pageable.unpaged())
- .size());
- }
-
- @Test
- public void E_findByUsername()
- {
- assertEquals("admin",
- userService.findByName("admin")
- .getUsername());
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void AA_findByUsernameNotfound()
- {
- assertEquals("admin",
- userService.findByName("turtle")
- .getUsername());
- }
-
- @Test
- public void AB_findByNameContaining()
- {
- assertEquals(4,
- userService.findByNameContaining("a",
- Pageable.unpaged())
- .size());
- }
-
- @Test
- public void F_save()
- {
- ArrayList datas = new ArrayList<>();
- User u2 = new User("tiger",
- "ILuvMath!",
- "tiger@school.lambda",
- datas);
- u2.getUseremails()
- .add(new Useremail(u2,
- "tiger@tiger.local"));
-
- User saveU2 = userService.save(u2);
-
- System.out.println("*** DATA ***");
- System.out.println(saveU2);
- System.out.println("*** DATA ***");
-
- assertEquals("tiger@tiger.local",
- saveU2.getUseremails()
- .get(0)
- .getUseremail());
- }
-
- @Test(expected = ResourceFoundException.class)
- public void FA_saveResourceFound()
- {
- ArrayList datas = new ArrayList<>();
- User u2 = new User("cinnamon",
- "ILuvMath!",
- "cinnamon@school.lambda",
- datas);
- u2.getUseremails()
- .add(new Useremail(u2,
- "tiger@tiger.local"));
-
- User saveU2 = userService.save(u2);
-
- System.out.println("*** DATA ***");
- System.out.println(saveU2);
- System.out.println("*** DATA ***");
-
- assertEquals("tiger@tiger.local",
- saveU2.getUseremails()
- .get(0)
- .getUseremail());
- }
-
- @Transactional
- @WithUserDetails("cinnamon")
- @Test
- public void G_update()
- {
- ArrayList datas = new ArrayList<>();
- User u2 = new User("cinnamon",
- "password",
- "cinnamon@school.lambda",
- datas);
- u2.getUseremails()
- .add(new Useremail(u2,
- "cinnamon@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "hops@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "bunny@email.thump"));
-
- User updatedu2 = userService.update(u2,
- 7,
- false);
-
- System.out.println("*** DATA ***");
- System.out.println(updatedu2);
- System.out.println("*** DATA ***");
-
- int checking = updatedu2.getUseremails()
- .size() - 1;
- assertEquals("bunny@email.thump",
- updatedu2.getUseremails()
- .get(checking)
- .getUseremail());
- }
-
- @Transactional
- @WithUserDetails("cinnamon")
- @Test(expected = ResourceFoundException.class)
- public void GA_updateWithUserRole()
- {
- Role r2 = new Role("user");
-
- ArrayList datas = new ArrayList<>();
- User u2 = new User("cinnamon",
- "password",
- "cinnamon@school.lambda",
- datas);
- datas.add(new UserRoles(u2,
- r2));
- u2.getUseremails()
- .add(new Useremail(u2,
- "cinnamon@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "hops@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "bunny@email.thump"));
-
- User updatedu2 = userService.update(u2,
- 7,
- false);
-
- System.out.println("*** DATA ***");
- System.out.println(updatedu2);
- System.out.println("*** DATA ***");
-
- int checking = updatedu2.getUseremails()
- .size() - 1;
- assertEquals("bunny@email.thump",
- updatedu2.getUseremails()
- .get(checking)
- .getUseremail());
- }
-
- @Transactional
- @WithUserDetails("cinnamon")
- @Test(expected = ResourceNotFoundException.class)
- public void GB_updateNotCurrentUserNorAdmin()
- {
- Role r2 = new Role("user");
-
- ArrayList datas = new ArrayList<>();
- User u2 = new User("cinnamon",
- "password",
- "cinnamon@school.lambda",
- datas);
- u2.getUseremails()
- .add(new Useremail(u2,
- "cinnamon@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "hops@mymail.thump"));
- u2.getUseremails()
- .add(new Useremail(u2,
- "bunny@email.thump"));
-
- User updatedu2 = userService.update(u2,
- 8,
- false);
-
- System.out.println("*** DATA ***");
- System.out.println(updatedu2);
- System.out.println("*** DATA ***");
-
- int checking = updatedu2.getUseremails()
- .size() - 1;
- assertEquals("bunny@email.thump",
- updatedu2.getUseremails()
- .get(checking)
- .getUseremail());
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void H_deleteUserRoleComboNotFound()
- {
- // testing cinnamon and user roles
- userService.deleteUserRole(11,
- 2);
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void HA_deleteUserRoleRoleNotFound()
- {
- userService.deleteUserRole(7,
- 50);
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void HB_deleteUserRoleUserNotFound()
- {
- userService.deleteUserRole(50,
- 2);
- }
-
- @Test(expected = ResourceFoundException.class)
- public void IA_addUserRoleUserRoleFound()
- {
- userService.addUserRole(11,
- 1);
- }
-
- @Test
- public void IB_deleteUserRole()
- {
- userService.deleteUserRole(11,
- 1);
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void IC_addUserRoleRoleNotFound()
- {
- userService.addUserRole(7,
- 50);
- }
-
- @Test(expected = ResourceNotFoundException.class)
- public void ID_addUserRoleUserNotFound()
- {
- userService.addUserRole(50,
- 2);
- }
-
- @Test
- public void IE_addUserRole()
- {
- userService.addUserRole(11,
- 2);
- }
-}
\ No newline at end of file
diff --git a/oauth2/src/test/resources/application.properties b/oauth2/src/test/resources/application.properties
index 6953168..fcfb92c 100644
--- a/oauth2/src/test/resources/application.properties
+++ b/oauth2/src/test/resources/application.properties
@@ -19,17 +19,20 @@ local.run.db=H2
# posgress://username :password @url host :5432/dbname
server.port=${PORT:2019}
# Begin h2 configuration
+# Begin h2 configuration
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true
# End h2 configuration
+# Should we use createBlob from java.sql.connection. PostgreSQL requires it to be true.
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# What do with the schema
# drop n create table again, good for testing
-# spring.jpa.hibernate.ddl-auto=create
-# spring.datasource.initialization-mode=always
+spring.jpa.hibernate.ddl-auto=create
+spring.datasource.initialization-mode=always
# Good for production!
-spring.jpa.hibernate.ddl-auto=update
-spring.datasource.initialization-mode=never
+# spring.jpa.hibernate.ddl-auto=update
+# spring.datasource.initialization-mode=never
# Feature that determines what happens when no accessors are found for a type
# (and there are no annotations to indicate it is meant to be serialized).
spring.jackson.serialization.fail-on-empty-beans=false
@@ -40,7 +43,5 @@ spring.jpa.open-in-view=true
# Shows the generated and custom SQL but does hurt performance and the logs get full fast
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
-# Turns off Spring Boot automatic exception handling
-server.error.whitelabel.enabled=false
-# Should we use createBlob from java.sql.connection. PostgreSQL requires it to be true.
-spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+# Turns off Spring Boot automatic excepti
+