diff options
author | Yigit Sever | 2021-04-14 00:34:39 +0300 |
---|---|---|
committer | Yigit Sever | 2021-04-14 00:34:39 +0300 |
commit | 54e81adac6a24291e2ee16cf5597f127122f62eb (patch) | |
tree | d0a031ecf550fe3ee0dc3fead8171686d6f48cb0 /src | |
parent | 61378ccfcc0993744f110db89b0fea52545c1ce6 (diff) | |
download | gradecoin-54e81adac6a24291e2ee16cf5597f127122f62eb.tar.gz gradecoin-54e81adac6a24291e2ee16cf5597f127122f62eb.tar.bz2 gradecoin-54e81adac6a24291e2ee16cf5597f127122f62eb.zip |
Add empty block test
Diffstat (limited to 'src')
-rw-r--r-- | src/handlers.rs | 2 | ||||
-rw-r--r-- | src/schema.rs | 6 | ||||
-rw-r--r-- | src/validators.rs | 6 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/handlers.rs b/src/handlers.rs index 1189b35..362a341 100644 --- a/src/handlers.rs +++ b/src/handlers.rs | |||
@@ -122,6 +122,8 @@ pub async fn authorized_propose_block( | |||
122 | 122 | ||
123 | let users_store = db.users.read(); | 123 | let users_store = db.users.read(); |
124 | 124 | ||
125 | println!("{:?}", &new_block); | ||
126 | |||
125 | let internal_user = match users_store.get(&new_block.transaction_list[0]) { | 127 | let internal_user = match users_store.get(&new_block.transaction_list[0]) { |
126 | Some(existing_user) => existing_user, | 128 | Some(existing_user) => existing_user, |
127 | None => { | 129 | None => { |
diff --git a/src/schema.rs b/src/schema.rs index b07744a..6719722 100644 --- a/src/schema.rs +++ b/src/schema.rs | |||
@@ -92,6 +92,7 @@ pub struct Transaction { | |||
92 | /// | 92 | /// |
93 | #[derive(Serialize, Deserialize, Debug)] | 93 | #[derive(Serialize, Deserialize, Debug)] |
94 | pub struct Block { | 94 | pub struct Block { |
95 | #[serde(skip_serializing_if = "Vec::is_empty")] | ||
95 | pub transaction_list: Vec<PublicKeySignature>, | 96 | pub transaction_list: Vec<PublicKeySignature>, |
96 | pub nonce: u32, | 97 | pub nonce: u32, |
97 | pub timestamp: NaiveDateTime, | 98 | pub timestamp: NaiveDateTime, |
@@ -101,6 +102,7 @@ pub struct Block { | |||
101 | /// For prototyping and letting serde handle everything json | 102 | /// For prototyping and letting serde handle everything json |
102 | #[derive(Serialize, Deserialize, Debug)] | 103 | #[derive(Serialize, Deserialize, Debug)] |
103 | pub struct NakedBlock { | 104 | pub struct NakedBlock { |
105 | #[serde(skip_serializing_if = "Vec::is_empty", default)] | ||
104 | pub transaction_list: Vec<PublicKeySignature>, | 106 | pub transaction_list: Vec<PublicKeySignature>, |
105 | pub nonce: u32, | 107 | pub nonce: u32, |
106 | pub timestamp: NaiveDateTime, | 108 | pub timestamp: NaiveDateTime, |
@@ -110,10 +112,10 @@ impl Block { | |||
110 | /// Genesis block | 112 | /// Genesis block |
111 | pub fn new() -> Block { | 113 | pub fn new() -> Block { |
112 | Block { | 114 | Block { |
113 | transaction_list: vec![], | 115 | transaction_list: vec!["gradecoin_bank".to_owned()], |
114 | nonce: 0, | 116 | nonce: 0, |
115 | timestamp: NaiveDate::from_ymd(2021, 04, 11).and_hms(20, 45, 00), | 117 | timestamp: NaiveDate::from_ymd(2021, 04, 11).and_hms(20, 45, 00), |
116 | hash: String::from(""), | 118 | hash: String::from("not_actually_mined"), |
117 | } | 119 | } |
118 | } | 120 | } |
119 | } | 121 | } |
diff --git a/src/validators.rs b/src/validators.rs index dbebee8..31344d8 100644 --- a/src/validators.rs +++ b/src/validators.rs | |||
@@ -1,14 +1,14 @@ | |||
1 | // Custom validators incoming data | 1 | /// Custom validators incoming data |
2 | 2 | ||
3 | use log::error; | 3 | use log::error; |
4 | use serde::de::{Deserializer, Error as DeserializerError, Unexpected}; | 4 | use serde::de::{Deserializer, Error as DeserializerError, Unexpected}; |
5 | use serde::ser::{Error as SerializerError, Serializer}; | 5 | use serde::ser::{Error as SerializerError, Serializer}; |
6 | use serde::Deserialize; | 6 | use serde::Deserialize; |
7 | 7 | ||
8 | pub mod validate_game_rating { | 8 | pub mod validate_block { |
9 | use super::*; | 9 | use super::*; |
10 | 10 | ||
11 | const ERROR_MESSAGE: &str = "rating must be a number between 0 and 100"; | 11 | const ERROR_MESSAGE: &str = "block cannot have an empty transaction list"; |
12 | 12 | ||
13 | pub fn deserialize<'de, D>(deserializer: D) -> Result<u8, D::Error> | 13 | pub fn deserialize<'de, D>(deserializer: D) -> Result<u8, D::Error> |
14 | where | 14 | where |