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