Skip to content

Commit

Permalink
tests: [torrust#56] for tracker keys table in upgrader
Browse files Browse the repository at this point in the history
  • Loading branch information
josecelano committed Nov 30, 2022
1 parent 8d74e66 commit eef980c
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 14 deletions.
18 changes: 17 additions & 1 deletion tests/upgrades/from_v1_0_0_to_v2_0_0/sqlite_v1_0_0.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
use sqlx::sqlite::SqlitePoolOptions;
use sqlx::{query, SqlitePool};
use std::fs;
use torrust_index_backend::upgrades::from_v1_0_0_to_v2_0_0::databases::sqlite_v1_0_0::UserRecordV1;
use torrust_index_backend::upgrades::from_v1_0_0_to_v2_0_0::databases::sqlite_v1_0_0::{
TrackerKeyRecordV1, UserRecordV1,
};

pub struct SqliteDatabaseV1_0_0 {
pub pool: SqlitePool,
Expand Down Expand Up @@ -65,4 +67,18 @@ impl SqliteDatabaseV1_0_0 {
.await
.map(|v| v.last_insert_rowid())
}

pub async fn insert_tracker_key(
&self,
tracker_key: &TrackerKeyRecordV1,
) -> Result<i64, sqlx::Error> {
query("INSERT INTO torrust_tracker_keys (key_id, user_id, key, valid_until) VALUES (?, ?, ?, ?)")
.bind(tracker_key.key_id)
.bind(tracker_key.user_id)
.bind(tracker_key.key.clone())
.bind(tracker_key.valid_until)
.execute(&self.pool)
.await
.map(|v| v.last_insert_rowid())
}
}
20 changes: 20 additions & 0 deletions tests/upgrades/from_v1_0_0_to_v2_0_0/sqlite_v2_0_0.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ pub struct UserAuthenticationRecordV2 {
pub password_hash: String,
}

#[derive(Debug, Serialize, Deserialize, sqlx::FromRow)]
pub struct TrackerKeyRecordV2 {
pub tracker_key_id: i64,
pub user_id: i64,
pub tracker_key: String,
pub date_expiry: i64,
}

pub struct SqliteDatabaseV2_0_0 {
pub pool: SqlitePool,
}
Expand Down Expand Up @@ -69,4 +77,16 @@ impl SqliteDatabaseV2_0_0 {
.fetch_one(&self.pool)
.await
}

pub async fn get_tracker_key(
&self,
tracker_key_id: i64,
) -> Result<TrackerKeyRecordV2, sqlx::Error> {
query_as::<_, TrackerKeyRecordV2>(
"SELECT * FROM torrust_tracker_keys WHERE user_id = ?",
)
.bind(tracker_key_id)
.fetch_one(&self.pool)
.await
}
}
1 change: 1 addition & 0 deletions tests/upgrades/from_v1_0_0_to_v2_0_0/testers/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pub mod tracker_keys_tester;
pub mod user_data_tester;
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
use crate::upgrades::from_v1_0_0_to_v2_0_0::sqlite_v1_0_0::SqliteDatabaseV1_0_0;
use crate::upgrades::from_v1_0_0_to_v2_0_0::sqlite_v2_0_0::SqliteDatabaseV2_0_0;
use std::sync::Arc;
use torrust_index_backend::upgrades::from_v1_0_0_to_v2_0_0::databases::sqlite_v1_0_0::TrackerKeyRecordV1;

pub struct TrackerKeysTester {
source_database: Arc<SqliteDatabaseV1_0_0>,
destiny_database: Arc<SqliteDatabaseV2_0_0>,
test_data: TestData,
}

pub struct TestData {
pub tracker_key: TrackerKeyRecordV1,
}

impl TrackerKeysTester {
pub fn new(
source_database: Arc<SqliteDatabaseV1_0_0>,
destiny_database: Arc<SqliteDatabaseV2_0_0>,
user_id: i64,
) -> Self {
let tracker_key = TrackerKeyRecordV1 {
key_id: 1,
user_id,
key: "rRstSTM5rx0sgxjLkRSJf3rXODcRBI5T".to_string(),
valid_until: 2456956800, // 11-10-2047 00:00:00 UTC
};

Self {
source_database,
destiny_database,
test_data: TestData { tracker_key },
}
}

pub async fn load_data_into_source_db(&self) {
self.source_database
.insert_tracker_key(&self.test_data.tracker_key)
.await
.unwrap();
}

/// Table `torrust_tracker_keys`
pub async fn assert(&self) {
let imported_key = self
.destiny_database
.get_tracker_key(self.test_data.tracker_key.key_id)
.await
.unwrap();

assert_eq!(
imported_key.tracker_key_id,
self.test_data.tracker_key.key_id
);
assert_eq!(imported_key.user_id, self.test_data.tracker_key.user_id);
assert_eq!(imported_key.tracker_key, self.test_data.tracker_key.key);
assert_eq!(
imported_key.date_expiry,
self.test_data.tracker_key.valid_until
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pub struct UserDataTester {
source_database: Arc<SqliteDatabaseV1_0_0>,
destiny_database: Arc<SqliteDatabaseV2_0_0>,
execution_time: String,
test_data: TestData,
pub test_data: TestData,
}

pub struct TestData {
Expand Down
23 changes: 11 additions & 12 deletions tests/upgrades/from_v1_0_0_to_v2_0_0/upgrader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
//! to see the "upgrader" command output.
use crate::upgrades::from_v1_0_0_to_v2_0_0::sqlite_v1_0_0::SqliteDatabaseV1_0_0;
use crate::upgrades::from_v1_0_0_to_v2_0_0::sqlite_v2_0_0::SqliteDatabaseV2_0_0;
use crate::upgrades::from_v1_0_0_to_v2_0_0::testers::tracker_keys_tester::TrackerKeysTester;
use crate::upgrades::from_v1_0_0_to_v2_0_0::testers::user_data_tester::UserDataTester;
use std::fs;
use std::sync::Arc;
Expand Down Expand Up @@ -43,7 +44,7 @@ async fn upgrades_data_from_version_v1_0_0_to_v2_0_0() {

// Load data into database v1

// `torrust_users` table
// `torrust_users`, `torrust_user_profiles` and `torrust_user_authentication` tables

let user_data_tester = UserDataTester::new(
source_database.clone(),
Expand All @@ -55,7 +56,13 @@ async fn upgrades_data_from_version_v1_0_0_to_v2_0_0() {

// `torrust_tracker_keys` table

// TODO
let tracker_keys_tester = TrackerKeysTester::new(
source_database.clone(),
destiny_database.clone(),
user_data_tester.test_data.user.user_id,
);

tracker_keys_tester.load_data_into_source_db().await;

// `torrust_torrents` table

Expand All @@ -71,21 +78,13 @@ async fn upgrades_data_from_version_v1_0_0_to_v2_0_0() {

// Assertions in database v2

// `torrust_users` table
// `torrust_users`, `torrust_user_profiles` and `torrust_user_authentication` tables

user_data_tester.assert().await;

// `torrust_user_authentication` table

// TODO

// `torrust_user_profiles` table

// TODO

// `torrust_tracker_keys` table

// TODO
tracker_keys_tester.assert().await;

// `torrust_torrents` table

Expand Down

0 comments on commit eef980c

Please sign in to comment.