diff --git a/actors/database_manager/src/account_addresses.rs b/actors/database_manager/src/account_addresses.rs index 4f0c189..87f3c33 100644 --- a/actors/database_manager/src/account_addresses.rs +++ b/actors/database_manager/src/account_addresses.rs @@ -1,6 +1,6 @@ use crate::{db_async_handler, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Can't load account addresses")] AccountAddresses, diff --git a/actors/database_manager/src/accounts.rs b/actors/database_manager/src/accounts.rs index 0dde89c..f402b3f 100644 --- a/actors/database_manager/src/accounts.rs +++ b/actors/database_manager/src/accounts.rs @@ -5,7 +5,7 @@ use sqlx::PgPool; use crate::{db_async_handler, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] #[serde(rename_all = "kebab-case")] pub enum Error { #[error("Can't create account")] diff --git a/actors/database_manager/src/lib.rs b/actors/database_manager/src/lib.rs index 574a1eb..aa4804d 100644 --- a/actors/database_manager/src/lib.rs +++ b/actors/database_manager/src/lib.rs @@ -124,7 +124,7 @@ macro_rules! query_db { }; } -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] #[serde(rename_all = "kebab-case")] pub enum Error { #[error("{0}")] diff --git a/actors/database_manager/src/order_addresses.rs b/actors/database_manager/src/order_addresses.rs index fd59479..e0b0386 100644 --- a/actors/database_manager/src/order_addresses.rs +++ b/actors/database_manager/src/order_addresses.rs @@ -1,6 +1,6 @@ use crate::{db_async_handler, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Can't load account addresses")] OrderAddress, diff --git a/actors/database_manager/src/order_items.rs b/actors/database_manager/src/order_items.rs index 5b12080..990ec16 100644 --- a/actors/database_manager/src/order_items.rs +++ b/actors/database_manager/src/order_items.rs @@ -6,7 +6,7 @@ use sqlx::PgPool; use super::Result; use crate::db_async_handler; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Can't create order item")] CantCreate, diff --git a/actors/database_manager/src/orders.rs b/actors/database_manager/src/orders.rs index 3b5888b..e67d961 100644 --- a/actors/database_manager/src/orders.rs +++ b/actors/database_manager/src/orders.rs @@ -7,7 +7,7 @@ use crate::{ ShoppingCartSetState, }; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] #[serde(rename_all = "kebab-case", tag = "account-order")] pub enum Error { #[error("Can't create account order")] diff --git a/actors/database_manager/src/photos.rs b/actors/database_manager/src/photos.rs index 8cf9f1a..75ed5de 100644 --- a/actors/database_manager/src/photos.rs +++ b/actors/database_manager/src/photos.rs @@ -1,6 +1,6 @@ use crate::{MultiLoad, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Failed to create photo")] Create, diff --git a/actors/database_manager/src/product_photos.rs b/actors/database_manager/src/product_photos.rs index ab45354..c25a390 100644 --- a/actors/database_manager/src/product_photos.rs +++ b/actors/database_manager/src/product_photos.rs @@ -1,6 +1,6 @@ use crate::{db_async_handler, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Failed to attach photo to product")] Create, diff --git a/actors/database_manager/src/products.rs b/actors/database_manager/src/products.rs index f7f207f..1ba4088 100644 --- a/actors/database_manager/src/products.rs +++ b/actors/database_manager/src/products.rs @@ -9,7 +9,7 @@ use model::{ use super::Result; use crate::MultiLoad; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Unable to load all products")] All, @@ -22,7 +22,7 @@ pub enum Error { #[error("Unable to find products for shopping cart")] ShoppingCartProducts, #[error("Product with id {0} can't be found")] - Single(model::ProductId), + Single(ProductId), #[error("Failed to load products for given ids")] FindProducts, } diff --git a/actors/database_manager/src/shopping_cart_items.rs b/actors/database_manager/src/shopping_cart_items.rs index 4708e12..3ecd6c3 100644 --- a/actors/database_manager/src/shopping_cart_items.rs +++ b/actors/database_manager/src/shopping_cart_items.rs @@ -4,7 +4,7 @@ use sqlx::PgPool; use super::Result; use crate::db_async_handler; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Can't create shopping cart item")] CantCreate, diff --git a/actors/database_manager/src/shopping_carts.rs b/actors/database_manager/src/shopping_carts.rs index 165baa3..8477651 100644 --- a/actors/database_manager/src/shopping_carts.rs +++ b/actors/database_manager/src/shopping_carts.rs @@ -4,7 +4,7 @@ use sqlx::PgPool; use super::Result; use crate::db_async_handler; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Can't create shopping cart")] CantCreate, diff --git a/actors/database_manager/src/stocks.rs b/actors/database_manager/src/stocks.rs index f94e918..817b44a 100644 --- a/actors/database_manager/src/stocks.rs +++ b/actors/database_manager/src/stocks.rs @@ -4,7 +4,7 @@ use sqlx::PgPool; use crate::{MultiLoad, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Unable to load all stocks")] All, diff --git a/actors/database_manager/src/tokens.rs b/actors/database_manager/src/tokens.rs index 7d12edd..1759e0c 100644 --- a/actors/database_manager/src/tokens.rs +++ b/actors/database_manager/src/tokens.rs @@ -4,7 +4,7 @@ use sqlx::PgPool; use crate::{db_async_handler, Result}; -#[derive(Debug, Copy, Clone, serde::Serialize, thiserror::Error)] +#[derive(Debug, Copy, Clone, PartialEq, serde::Serialize, thiserror::Error)] pub enum Error { #[error("Failed to save new token")] Create, @@ -220,4 +220,57 @@ mod tests { test_create_account(db).await; } + + #[actix::test] + async fn find_by_jti() { + let config = config::default_load(&mut NoOpts); + config + .lock() + .database_mut() + .set_url("postgres://postgres@localhost/bazzar_test"); + + let db = Database::build(config).await.start(); + + let original = test_create_token_extended(db.clone(), None, None, None, None, None).await; + + let found = db + .send(TokenByJti { + jti: original.jwt_id, + }) + .await + .unwrap() + .unwrap(); + + assert_eq!(found, original); + } + + #[actix::test] + async fn find_by_jti_expired() { + let config = config::default_load(&mut NoOpts); + config + .lock() + .database_mut() + .set_url("postgres://postgres@localhost/bazzar_test"); + + let db = Database::build(config).await.start(); + + let original = test_create_token_extended( + db.clone(), + None, + None, + None, + None, + Some((chrono::Utc::now() - chrono::Duration::seconds(1)).naive_utc()), + ) + .await; + + let found = db + .send(TokenByJti { + jti: original.jwt_id, + }) + .await + .unwrap(); + + assert_eq!(found, Err(crate::Error::Token(super::Error::Jti))); + } } diff --git a/shared/model/src/lib.rs b/shared/model/src/lib.rs index d7bc426..5ca84b4 100644 --- a/shared/model/src/lib.rs +++ b/shared/model/src/lib.rs @@ -961,7 +961,7 @@ pub struct OrderItem { #[cfg_attr(feature = "dummy", derive(fake::Dummy))] #[cfg_attr(feature = "db", derive(sqlx::Type))] #[cfg_attr(feature = "db", sqlx(transparent))] -#[derive(Serialize, Deserialize, Copy, Clone, Debug, Deref, Display)] +#[derive(Serialize, Deserialize, PartialEq, Copy, Clone, Debug, Deref, Display)] #[serde(transparent)] pub struct ShoppingCartId(pub RecordId); @@ -979,7 +979,7 @@ pub struct ShoppingCart { #[cfg_attr(feature = "dummy", derive(fake::Dummy))] #[cfg_attr(feature = "db", derive(sqlx::Type))] #[cfg_attr(feature = "db", sqlx(transparent))] -#[derive(Serialize, Deserialize, Copy, Clone, Debug, Deref, Display)] +#[derive(Serialize, Deserialize, PartialEq, Copy, Clone, Debug, Deref, Display)] #[serde(transparent)] pub struct ShoppingCartItemId(RecordId);