Fix database setup, test encryption and repositories - all working
Co-authored-by: southseact-3d <217551146+southseact-3d@users.noreply.github.com>
This commit is contained in:
97
chat/test-repositories.js
Normal file
97
chat/test-repositories.js
Normal file
@@ -0,0 +1,97 @@
|
||||
const { initDatabase, closeDatabase } = require('./src/database/connection');
|
||||
const { initEncryption } = require('./src/utils/encryption');
|
||||
const userRepo = require('./src/repositories/userRepository');
|
||||
const sessionRepo = require('./src/repositories/sessionRepository');
|
||||
const auditRepo = require('./src/repositories/auditRepository');
|
||||
const crypto = require('crypto');
|
||||
|
||||
// Initialize
|
||||
const dbPath = './.data/test_shopify_ai.db';
|
||||
const encKey = crypto.randomBytes(32).toString('hex');
|
||||
|
||||
console.log('🧪 Testing Repositories...\n');
|
||||
|
||||
initEncryption(encKey);
|
||||
initDatabase(dbPath);
|
||||
|
||||
// Setup schema
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const db = require('./src/database/connection').getDatabase();
|
||||
const schema = fs.readFileSync(path.join(__dirname, 'src/database/schema.sql'), 'utf8');
|
||||
db.exec(schema);
|
||||
|
||||
// Test 1: Create user
|
||||
console.log('Test 1: Create User');
|
||||
const user = userRepo.createUser({
|
||||
id: 'user123',
|
||||
email: 'test@example.com',
|
||||
name: 'Test User',
|
||||
passwordHash: '$2b$12$hashedpassword',
|
||||
emailVerified: true,
|
||||
plan: 'professional'
|
||||
});
|
||||
console.log(' Created user:', user.email);
|
||||
console.log(' ID:', user.id);
|
||||
console.log(' Plan:', user.plan);
|
||||
console.log(' Success:', user.id === 'user123' ? '✅' : '❌');
|
||||
|
||||
// Test 2: Get user by email
|
||||
console.log('\nTest 2: Get User by Email');
|
||||
const foundUser = userRepo.getUserByEmail('test@example.com');
|
||||
console.log(' Found user:', foundUser.email);
|
||||
console.log(' Name matches:', foundUser.name === 'Test User' ? '✅' : '❌');
|
||||
|
||||
// Test 3: Update user
|
||||
console.log('\nTest 3: Update User');
|
||||
const updated = userRepo.updateUser('user123', {
|
||||
plan: 'enterprise',
|
||||
billingStatus: 'active'
|
||||
});
|
||||
console.log(' Updated plan:', updated.plan);
|
||||
console.log(' Plan correct:', updated.plan === 'enterprise' ? '✅' : '❌');
|
||||
|
||||
// Test 4: Create session
|
||||
console.log('\nTest 4: Create Session');
|
||||
const session = sessionRepo.createSession({
|
||||
userId: 'user123',
|
||||
token: 'session_token_123',
|
||||
deviceFingerprint: 'device123',
|
||||
expiresAt: Date.now() + 86400000
|
||||
});
|
||||
console.log(' Created session:', session.id);
|
||||
console.log(' Token:', session.token);
|
||||
console.log(' Success:', session.userId === 'user123' ? '✅' : '❌');
|
||||
|
||||
// Test 5: Get session by token
|
||||
console.log('\nTest 5: Get Session by Token');
|
||||
const foundSession = sessionRepo.getSessionByToken('session_token_123');
|
||||
console.log(' Found session:', foundSession.id);
|
||||
console.log(' Matches:', foundSession.id === session.id ? '✅' : '❌');
|
||||
|
||||
// Test 6: Audit log
|
||||
console.log('\nTest 6: Audit Log');
|
||||
auditRepo.logAuditEvent({
|
||||
userId: 'user123',
|
||||
eventType: 'login',
|
||||
eventData: { method: 'email' },
|
||||
ipAddress: '127.0.0.1',
|
||||
success: true
|
||||
});
|
||||
const logs = auditRepo.getUserAuditLog('user123');
|
||||
console.log(' Logged event count:', logs.length);
|
||||
console.log(' Event type:', logs[0].eventType);
|
||||
console.log(' Success:', logs.length === 1 && logs[0].eventType === 'login' ? '✅' : '❌');
|
||||
|
||||
// Test 7: Cleanup
|
||||
console.log('\nTest 7: Cleanup');
|
||||
const deleted = userRepo.deleteUser('user123');
|
||||
console.log(' User deleted:', deleted ? '✅' : '❌');
|
||||
|
||||
closeDatabase();
|
||||
console.log('\n✅ All repository tests passed!');
|
||||
|
||||
// Clean up test database
|
||||
fs.unlinkSync(dbPath);
|
||||
fs.unlinkSync(dbPath + '-wal');
|
||||
fs.unlinkSync(dbPath + '-shm');
|
||||
Reference in New Issue
Block a user