You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-07-31 09:24:31 +03:00
Database testing
This commit is contained in:
15
.github/workflows/ci.yaml
vendored
15
.github/workflows/ci.yaml
vendored
@ -259,12 +259,20 @@ jobs:
|
|||||||
target
|
target
|
||||||
key: ${{ runner.os }}-cargo-build-${{ steps.toolchain.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.lock') }}
|
key: ${{ runner.os }}-cargo-build-${{ steps.toolchain.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.lock') }}
|
||||||
|
|
||||||
|
- name: Start PostgreSQL database
|
||||||
|
run: |
|
||||||
|
sudo systemctl start postgresql.service
|
||||||
|
pg_isready
|
||||||
|
sudo -u postgres psql --command="CREATE USER test PASSWORD 'test'" --command="\du"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
id: test
|
id: test
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
command: test
|
command: test
|
||||||
args: --offline --workspace
|
args: --offline --workspace
|
||||||
|
env:
|
||||||
|
DATABASE_URL: postgresql://test:test@localhost/postgres
|
||||||
|
|
||||||
# Ignore errors on the nightly toolchain
|
# Ignore errors on the nightly toolchain
|
||||||
continue-on-error: "${{ matrix.toolchain == 'nightly' }}"
|
continue-on-error: "${{ matrix.toolchain == 'nightly' }}"
|
||||||
@ -328,6 +336,12 @@ jobs:
|
|||||||
curl -sL https://github.com/mozilla/grcov/releases/download/v0.8.7/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar jxf - -C "${HOME}/.local/bin"
|
curl -sL https://github.com/mozilla/grcov/releases/download/v0.8.7/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar jxf - -C "${HOME}/.local/bin"
|
||||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
- name: Start PostgreSQL database
|
||||||
|
run: |
|
||||||
|
sudo systemctl start postgresql.service
|
||||||
|
pg_isready
|
||||||
|
sudo -u postgres psql --command="CREATE USER test PASSWORD 'test'" --command="\du"
|
||||||
|
|
||||||
- name: Run test suite with profiling enabled
|
- name: Run test suite with profiling enabled
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
@ -337,6 +351,7 @@ jobs:
|
|||||||
CARGO_INCREMENTAL: '0'
|
CARGO_INCREMENTAL: '0'
|
||||||
RUSTFLAGS: '-Cinstrument-coverage'
|
RUSTFLAGS: '-Cinstrument-coverage'
|
||||||
LLVM_PROFILE_FILE: "cargo-test-%p-%m.profraw"
|
LLVM_PROFILE_FILE: "cargo-test-%p-%m.profraw"
|
||||||
|
DATABASE_URL: postgresql://test:test@localhost/postgres
|
||||||
|
|
||||||
- name: Build grcov report
|
- name: Build grcov report
|
||||||
run: |
|
run: |
|
||||||
|
@ -841,3 +841,33 @@ pub async fn add_user_email_verification_code(
|
|||||||
|
|
||||||
Ok(verification)
|
Ok(verification)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[sqlx::test(migrator = "crate::MIGRATOR")]
|
||||||
|
async fn test_user_registration_and_login(pool: sqlx::PgPool) -> anyhow::Result<()> {
|
||||||
|
let mut txn = pool.begin().await?;
|
||||||
|
|
||||||
|
let exists = username_exists(&mut txn, "john").await?;
|
||||||
|
assert!(!exists);
|
||||||
|
|
||||||
|
let hasher = Argon2::default();
|
||||||
|
let user = register_user(&mut txn, hasher, "john", "hunter2").await?;
|
||||||
|
assert_eq!(user.username, "john");
|
||||||
|
|
||||||
|
let exists = username_exists(&mut txn, "john").await?;
|
||||||
|
assert!(exists);
|
||||||
|
|
||||||
|
let session = login(&mut txn, "john", "hunter2").await?;
|
||||||
|
assert_eq!(session.user.data, user.data);
|
||||||
|
|
||||||
|
let user2 = lookup_user_by_username(&mut txn, "john").await?;
|
||||||
|
assert_eq!(user.data, user2.data);
|
||||||
|
|
||||||
|
txn.commit().await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user