| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #!/usr/bin/env python
- """
- 测试任务API调用
- 模拟实际的任务创建过程
- """
- import os
- import sys
- # 添加项目根目录到路径
- sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
- def test_task_creation():
- """测试任务创建过程"""
- from app import create_app, db
- from app.models import Task, User, AWSCredential
-
- app = create_app('testing')
-
- with app.app_context():
- # 创建测试数据
- db.create_all()
-
- # 创建测试用户
- user = User(
- username='testuser',
- email='test@example.com',
- role='admin'
- )
- user.set_password('testpass')
- db.session.add(user)
-
- # 创建测试凭证
- credential = AWSCredential(
- name='Test Credential',
- credential_type='access_key',
- account_id='123456789012',
- access_key_id='AKIATEST123456789',
- is_active=True
- )
- credential.set_secret_access_key('test-secret-key')
- db.session.add(credential)
- db.session.commit()
-
- print(f"✅ 测试数据创建成功")
- print(f" 用户ID: {user.id}")
- print(f" 凭证ID: {credential.id}")
-
- # 模拟任务创建
- task = Task(
- name='Test Task',
- status='pending',
- progress=0,
- created_by=user.id
- )
- task.credential_ids = [credential.id]
- task.regions = ['us-east-1']
- task.project_metadata = {
- 'clientName': 'Test Client',
- 'projectName': 'Test Project'
- }
-
- db.session.add(task)
- db.session.commit()
-
- print(f"✅ 测试任务创建成功,任务ID: {task.id}")
-
- # 测试Celery任务提交
- try:
- print("🔍 尝试提交Celery任务...")
- from app.tasks.scan_tasks import scan_aws_resources
-
- celery_task = scan_aws_resources.delay(
- task_id=task.id,
- credential_ids=[credential.id],
- regions=['us-east-1'],
- project_metadata={
- 'clientName': 'Test Client',
- 'projectName': 'Test Project'
- }
- )
-
- print(f"✅ Celery任务提交成功: {celery_task.id}")
- return True
-
- except Exception as e:
- print(f"❌ Celery任务提交失败: {e}")
- print(f" 错误类型: {type(e).__name__}")
-
- # 尝试Mock模式
- try:
- print("🔄 尝试Mock模式...")
- from app.tasks.mock_tasks import scan_aws_resources
-
- celery_task = scan_aws_resources.delay(
- task_id=task.id,
- credential_ids=[credential.id],
- regions=['us-east-1'],
- project_metadata={
- 'clientName': 'Test Client',
- 'projectName': 'Test Project'
- }
- )
-
- print(f"✅ Mock任务提交成功: {celery_task.id}")
- return True
-
- except Exception as e2:
- print(f"❌ Mock任务也失败: {e2}")
- return False
- def main():
- """运行测试"""
- print("="*50)
- print("任务API测试")
- print("="*50)
-
- try:
- result = test_task_creation()
- if result:
- print("\n🎉 任务创建测试成功!")
- else:
- print("\n❌ 任务创建测试失败!")
- except Exception as e:
- print(f"\n❌ 测试异常: {e}")
- import traceback
- traceback.print_exc()
-
- print("="*50)
- if __name__ == '__main__':
- main()
|