File size: 1,434 Bytes
754afec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""test_client.py module."""

import pytest
import tensorflow as tf
import yaml
from src.client.data_handler import FinancialDataHandler
from src.client.model import FederatedClient

@pytest.fixture
def config():
    """Load test configuration."""
    with open('config/client_config.yaml', 'r') as f:
        return yaml.safe_load(f)['client']

def test_data_handler(config):
    """Test data handler functionality."""
    handler = FinancialDataHandler(config)
    
    # Test data simulation
    data = handler.simulate_financial_data(num_samples=100)
    assert len(data) == 100
    assert all(col in data.columns for col in [
        'transaction_amount',
        'account_balance',
        'transaction_frequency',
        'credit_score',
        'days_since_last_transaction'
    ])
    
    # Test preprocessing
    dataset, scaler = handler.get_client_data()
    assert isinstance(dataset, tf.data.Dataset)
    
def test_federated_client(config):
    """Test federated client functionality."""
    client = FederatedClient(config)
    
    # Test model building
    assert isinstance(client.model, tf.keras.Model)
    
    # Test local training
    handler = FinancialDataHandler(config)
    dataset, _ = handler.get_client_data()
    
    training_result = client.train_local_model(dataset, epochs=1)
    assert 'client_id' in training_result
    assert 'weights' in training_result
    assert 'metrics' in training_result