aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYigit Sever2021-04-16 03:55:38 +0300
committerYigit Sever2021-04-16 03:55:38 +0300
commitf98766d8d989c18b2150b91463fba1f9de812658 (patch)
treece20af5f0e9e57b5b66f20eb30c15ece18236a4e
parent90525af1b50219801a019842bc635ea08f9f93d9 (diff)
parentf759c6b4da459ae2544c6cb5b0e19e4367fef57f (diff)
downloadgradecoin-f98766d8d989c18b2150b91463fba1f9de812658.tar.gz
gradecoin-f98766d8d989c18b2150b91463fba1f9de812658.tar.bz2
gradecoin-f98766d8d989c18b2150b91463fba1f9de812658.zip
Merge remote-tracking branch 'origin/main'
-rw-r--r--src/handlers.rs6
-rw-r--r--tests/route_tests.rs90
2 files changed, 66 insertions, 30 deletions
diff --git a/src/handlers.rs b/src/handlers.rs
index 3b62ef8..e76e72f 100644
--- a/src/handlers.rs
+++ b/src/handlers.rs
@@ -609,9 +609,11 @@ pub async fn authorized_propose_transaction(
609 // it has been changed since 609 // it has been changed since
610 610
611 let hashed_transaction = Md5::digest(&serde_json::to_vec(&new_transaction).unwrap()); 611 let hashed_transaction = Md5::digest(&serde_json::to_vec(&new_transaction).unwrap());
612 612 println!("{:?}", new_transaction);
613 println!("{:?}", &serde_json::to_vec(&new_transaction).unwrap());
614 println!("{:x}", hashed_transaction);
613 if token_payload.claims.tha != format!("{:x}", hashed_transaction) { 615 if token_payload.claims.tha != format!("{:x}", hashed_transaction) {
614 debug!( 616 println!(
615 "the hash of the request {:x} did not match the hash given in jwt {:?}", 617 "the hash of the request {:x} did not match the hash given in jwt {:?}",
616 hashed_transaction, token_payload.claims.tha 618 hashed_transaction, token_payload.claims.tha
617 ); 619 );
diff --git a/tests/route_tests.rs b/tests/route_tests.rs
index a1531bb..bae58ee 100644
--- a/tests/route_tests.rs
+++ b/tests/route_tests.rs
@@ -29,33 +29,51 @@ FQIDAQAB
29 }, 29 },
30 ); 30 );
31 31
32 // -----BEGIN RSA PRIVATE KEY----- 32 db.users.write().insert(
33 // MIIEpAIBAAKCAQEA5yWTMeFqr2nvOC9oR5Wq/nzcNlwCIaziojt7rJ4BBvuwkT0t 33 "mock_transaction_source2".to_owned(),
34 // ERDz8AgvUsaewiB+Fz5OXTeb3WAB1FEXnBXGekrGzvC8jHQMKHyNoWzUlpQJ9UMt 34 User {
35 // dQIWPOCuMyLpc+rNPL3428U8UpldjbTHHyq2/ef6abkdj+XWg/slYtrFeOf3ktc1 35 user_id: MetuId::new("e254275".to_owned(), "DtNX1qk4YF4saRH".to_owned()).unwrap(),
36 // l50R4k8VO8L6kQuh2+YIjXGPLShRaqnUQPtH8LFPX4bO9lJ9mAoMZFec6XVwumn/ 36 public_key: "-----BEGIN PUBLIC KEY-----
37 // uqu9jyWQL6qh6gtwQHgN+A9wGvzVvltJ9h8sshSHWWtBD0M19ilbXhKyBsHSSZkp 37MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5yWTMeFqr2nvOC9oR5Wq
38 // x+TAvFhfQ8JURw7KqahUPVlCwJ5OIKccJ/6FFQIDAQABAoIBADTZGnZlG4dPqSon 38/nzcNlwCIaziojt7rJ4BBvuwkT0tERDz8AgvUsaewiB+Fz5OXTeb3WAB1FEXnBXG
39 // bKgxSA83bQHgt3wLkyWUhApLdeCq2wvZ+NvWDG/s7yT11IZ991ZJIJGfjTtoIALz 39ekrGzvC8jHQMKHyNoWzUlpQJ9UMtdQIWPOCuMyLpc+rNPL3428U8UpldjbTHHyq2
40 // J3rAX8jGH/5gfDuArOb000z9HP3wivZQjawa9gqlNC7s5INkQ9iHdsaIqeoYtpMX 40/ef6abkdj+XWg/slYtrFeOf3ktc1l50R4k8VO8L6kQuh2+YIjXGPLShRaqnUQPtH
41 // qg8uLPiQeWiCsoeb/Rff7ARWEKA7udoZ2uZcZFMHTKx+mBpk8IiepQAJPBRVwmXk 418LFPX4bO9lJ9mAoMZFec6XVwumn/uqu9jyWQL6qh6gtwQHgN+A9wGvzVvltJ9h8s
42 // x/3LTaezi6Tkvp/k/gf4IeSICiRGFRmm2Vxciduj11/CrdTHPQLz/Rh5/IN8Bkry 42shSHWWtBD0M19ilbXhKyBsHSSZkpx+TAvFhfQ8JURw7KqahUPVlCwJ5OIKccJ/6F
43 // xdQdQxxhwxF/ap6OJIJyguq7gximn2uK0jbHY3nRmrF8SsEtIT+Gd7I46L/goR8c 43FQIDAQAB
44 // jQOQRmECgYEA9RJSOBUkZMLoUcC2LGJBZOAnJZ7WToCVdu3LrPceRYtQHwcznW4O 44-----END PUBLIC KEY-----"
45 // NAHF+blQRzqvbMi11ap8NVpkDDu0ki/Yi2VdSVjQmlaOcpAXjN6T5ZrKoz61xj4g 45 .to_owned(),
46 // 2T2/K6d6ypkZRKPhKCC1iI419rq/APVEZHYCl7jZp4iD2izHiegZYccCgYEA8XRK 46 balance: 30,
47 // rfVuPiYsaB07eJrRKKjuoM1Jcr19jZyXY8sbALRcExaTX2CRaPA7binVeDBXayQ1 47 },
48 // I0+kA1nV1EI+ROegV+b6gs2YaUmMJzI1yLqMqGDgHFxFvhkDsZaI+/V+G9eOLEt4 48 );
49 // 5ic5tImfZITLE/GSC8b+C16gxMGUN4t9gHq2okMCgYAKyNedaDDFzl3y2wwpP9mo 49
50 // 2sReP3Mm2Tm6lhRUdDt8y/impOZ8kw9E8p8HskP6HncBzoNR98KnhmbIswfrNvfM 50 /*-----BEGIN RSA PRIVATE KEY-----
51 // ipVkWOg1IoH6QKUIqfLQM9OfA290Xd+ML89t2Fzq9XnLL3sFDQtwCvIM/YLSQ/jS 51 MIIEpAIBAAKCAQEA5yWTMeFqr2nvOC9oR5Wq/nzcNlwCIaziojt7rJ4BBvuwkT0t
52 // gu7yRkwttzA2NapCQ1h6mQKBgQClwBwn8Qyd01y2mCKkNzsP+2/cqTAbeSNAXFe8 52 ERDz8AgvUsaewiB+Fz5OXTeb3WAB1FEXnBXGekrGzvC8jHQMKHyNoWzUlpQJ9UMt
53 // pMfDowx1+hBu7/7CF+/kPwmQuTa5kSB9PgWsWzYjwNm4OX1j+mbL9lEDLf7tRVWQ 53 dQIWPOCuMyLpc+rNPL3428U8UpldjbTHHyq2/ef6abkdj+XWg/slYtrFeOf3ktc1
54 // lydJyz7tmRYzWj6j4V/l/u90M3QgyiqTbCf73GG0AkjaRwHn3dG1gl9A0lZqDvK3 54 l50R4k8VO8L6kQuh2+YIjXGPLShRaqnUQPtH8LFPX4bO9lJ9mAoMZFec6XVwumn/
55 // iQXouwKBgQCrx6SCnEkhLISSZpzdDehtWmyCQJIwcdlRQlAmFLVn+TJHTXR7xUm2 55 uqu9jyWQL6qh6gtwQHgN+A9wGvzVvltJ9h8sshSHWWtBD0M19ilbXhKyBsHSSZkp
56 // VpTrPTfaYWx83OQUn/OZqY5gIQ+jlfwqnVg+PDQQ/P09/4xygRCLvjL6NCSvtkj1 56 x+TAvFhfQ8JURw7KqahUPVlCwJ5OIKccJ/6FFQIDAQABAoIBADTZGnZlG4dPqSon
57 // MRArEl4y68+jZLRu74TVG0lXi6ht6KhNHF6GiWKU9FHZ4B+btLicsg== 57 bKgxSA83bQHgt3wLkyWUhApLdeCq2wvZ+NvWDG/s7yT11IZ991ZJIJGfjTtoIALz
58 // -----END RSA PRIVATE KEY----- 58 J3rAX8jGH/5gfDuArOb000z9HP3wivZQjawa9gqlNC7s5INkQ9iHdsaIqeoYtpMX
59 qg8uLPiQeWiCsoeb/Rff7ARWEKA7udoZ2uZcZFMHTKx+mBpk8IiepQAJPBRVwmXk
60 x/3LTaezi6Tkvp/k/gf4IeSICiRGFRmm2Vxciduj11/CrdTHPQLz/Rh5/IN8Bkry
61 xdQdQxxhwxF/ap6OJIJyguq7gximn2uK0jbHY3nRmrF8SsEtIT+Gd7I46L/goR8c
62 jQOQRmECgYEA9RJSOBUkZMLoUcC2LGJBZOAnJZ7WToCVdu3LrPceRYtQHwcznW4O
63 NAHF+blQRzqvbMi11ap8NVpkDDu0ki/Yi2VdSVjQmlaOcpAXjN6T5ZrKoz61xj4g
64 2T2/K6d6ypkZRKPhKCC1iI419rq/APVEZHYCl7jZp4iD2izHiegZYccCgYEA8XRK
65 rfVuPiYsaB07eJrRKKjuoM1Jcr19jZyXY8sbALRcExaTX2CRaPA7binVeDBXayQ1
66 I0+kA1nV1EI+ROegV+b6gs2YaUmMJzI1yLqMqGDgHFxFvhkDsZaI+/V+G9eOLEt4
67 5ic5tImfZITLE/GSC8b+C16gxMGUN4t9gHq2okMCgYAKyNedaDDFzl3y2wwpP9mo
68 2sReP3Mm2Tm6lhRUdDt8y/impOZ8kw9E8p8HskP6HncBzoNR98KnhmbIswfrNvfM
69 ipVkWOg1IoH6QKUIqfLQM9OfA290Xd+ML89t2Fzq9XnLL3sFDQtwCvIM/YLSQ/jS
70 gu7yRkwttzA2NapCQ1h6mQKBgQClwBwn8Qyd01y2mCKkNzsP+2/cqTAbeSNAXFe8
71 pMfDowx1+hBu7/7CF+/kPwmQuTa5kSB9PgWsWzYjwNm4OX1j+mbL9lEDLf7tRVWQ
72 lydJyz7tmRYzWj6j4V/l/u90M3QgyiqTbCf73GG0AkjaRwHn3dG1gl9A0lZqDvK3
73 iQXouwKBgQCrx6SCnEkhLISSZpzdDehtWmyCQJIwcdlRQlAmFLVn+TJHTXR7xUm2
74 VpTrPTfaYWx83OQUn/OZqY5gIQ+jlfwqnVg+PDQQ/P09/4xygRCLvjL6NCSvtkj1
75 MRArEl4y68+jZLRu74TVG0lXi6ht6KhNHF6GiWKU9FHZ4B+btLicsg==
76 -----END RSA PRIVATE KEY-----*/
59 77
60 db.pending_transactions.write().insert( 78 db.pending_transactions.write().insert(
61 "mock_transaction_source".to_owned(), 79 "mock_transaction_source".to_owned(),
@@ -111,6 +129,16 @@ FQIDAQAB
111 timestamp: chrono::NaiveDate::from_ymd(2021, 04, 09).and_hms(14, 30, 00), 129 timestamp: chrono::NaiveDate::from_ymd(2021, 04, 09).and_hms(14, 30, 00),
112 } 130 }
113 } 131 }
132 fn mocked_transaction2() -> Transaction {
133 Transaction {
134 by: "mock_transaction_source".to_owned(),
135 source: "mock_transaction_source".to_owned(),
136 target: "mock_transaction_target".to_owned(),
137 amount: 25,
138 timestamp: chrono::NaiveDate::from_ymd(2021, 04, 09).and_hms(14, 30, 00),
139 }
140 }
141 // r#"{"by":"mock_transaction_source","source":"mock_transaction_source","target":"mock_transaction_target","amount":25,"timestamp":"2021-04-09T14:30:00"}"#
114 142
115 /// Test simple GET request to /transaction, an endpoint that exists 143 /// Test simple GET request to /transaction, an endpoint that exists
116 /// https://tools.ietf.org/html/rfc7231#section-6.3.1 144 /// https://tools.ietf.org/html/rfc7231#section-6.3.1
@@ -187,13 +215,16 @@ FQIDAQAB
187 let res = warp::test::request() 215 let res = warp::test::request()
188 .method("POST") 216 .method("POST")
189 .json(&mocked_transaction()) 217 .json(&mocked_transaction())
190 .header("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGEiOiI2NjkyZTc3NGViYTdmYjkyZGMwZmU2Y2Y3MzQ3NTkxZSIsImlhdCI6MTYxODI2MDY0MSwiZXhwIjoxNzE4MjYwNjQxfQ.M_FVVE5F_aYcDsprkcqV8n2DAhnM6jImAUEXChI9qYn55meE_0Pmp6AaJlTzclYUT1ZUQfFuehYTYu5UkigQ_AimDhqM5VWxPdnyfTQscV916arbNn4qXW6-3oHGUR93xK7-mX6mxeXyDZLxr1SD_JEvVzGWTU4Xo9SMYSIcaHjROAg_ChxJdD4WLe5T4He7O443jpXdAeeVVYfKoJyBfINx_bxiF58-ni1vur9q6-nrjnMw6sMMbtWD3qvzKZHN7HzfwNXM-90D-9VX1KiaJN05jIxLzCYacLeBUH595I4--XfgpLmqrV_P3Sucmny0yvagbZtjYjswmf0DjR99ug") 218 .header("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGEiOiJmODRmNTBjNjZkNDdhZTAzNzcwZjY0ZjUwMDgzMTAwMSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoyMDE2MjM5MDIyfQ.APOAH0nOqxnW5FoRjM-T9Mm0VThLrDZspKeTGXioKZJNkAMc6ZbQ_wqdvRXG-GRzivyVAW8849kbnQ-smWFHQjftKEF-aiKxWeO17vsQ4j5I9UdwwPJpGDbxU5vBgLAPXYG8wEndvC4bgy_a0P3FAlD8gIHebMh1YsbyfyEc6DFD4nvZwHzRFJtR43xRfCVgFAjSF_pB5YPAccB0DmYz_uKaGj69-9eNQYKr6giwXaiYIcF-G561kKLmTFPjCuACYNLMHONjwg8i0pT-tdiZgS7SiiWAOAo_98X54W0bCvn6i5tUPpzWKv61QXCWDdHi831YA8kMNJ2az_baRMtmhg")
191 .path("/transaction") 219 .path("/transaction")
192 .reply(&filter) 220 .reply(&filter)
193 .await; 221 .await;
194 222
195 println!("{:?}", res.body()); 223 println!("{:?}", res.body());
196 assert_eq!(res.status(), StatusCode::CREATED); 224 assert_eq!(res.status(), StatusCode::CREATED);
225 for i in db.pending_transactions.read().iter() {
226 println!("{:?}", i);
227 }
197 assert_eq!(db.pending_transactions.read().len(), 2); 228 assert_eq!(db.pending_transactions.read().len(), 2);
198 } 229 }
199 230
@@ -231,9 +262,12 @@ FQIDAQAB
231 /// the block 262 /// the block
232 #[tokio::test] 263 #[tokio::test]
233 async fn post_block_auth_201() { 264 async fn post_block_auth_201() {
265 println!("Wtf");
234 let db = mocked_db(); 266 let db = mocked_db();
235 let filter = consensus_routes(db.clone()); 267 let filter = consensus_routes(db.clone());
236 268
269
270
237 let res = warp::test::request() 271 let res = warp::test::request()
238 .method("POST") 272 .method("POST")
239 .json(&Block { 273 .json(&Block {