mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import pytest
 | |
| from models.model import Account, Tenant, TenantAccountJoin
 | |
| 
 | |
| 
 | |
| def test_setup_api_get(test_client,db_session):
 | |
|     response = test_client.get("/setup")
 | |
|     assert response.status_code == 200
 | |
|     assert response.json == {"step": "not_start"}
 | |
| 
 | |
|     # create a tenant and check again
 | |
|     tenant = Tenant(name="Test Tenant", status="normal")
 | |
|     db_session.add(tenant)
 | |
|     db_session.commit()
 | |
|     response = test_client.get("/setup")
 | |
|     assert response.status_code == 200
 | |
|     assert response.json == {"step": "step2"}
 | |
| 
 | |
|     # create setup file and check again
 | |
|     response = test_client.get("/setup")
 | |
|     assert response.status_code == 200
 | |
|     assert response.json == {"step": "finished"}
 | |
| 
 | |
| 
 | |
| def test_setup_api_post(test_client):
 | |
|     response = test_client.post("/setup", json={
 | |
|         "email": "test@test.com",
 | |
|         "name": "Test User",
 | |
|         "password": "Abc123456"
 | |
|     })
 | |
|     assert response.status_code == 200
 | |
|     assert response.json == {"result": "success", "next_step": "step2"}
 | |
| 
 | |
|     # check if the tenant, account, and tenant account join records were created
 | |
|     tenant = Tenant.query.first()
 | |
|     assert tenant.name == "Test User's LLM Factory"
 | |
|     assert tenant.status == "normal"
 | |
|     assert tenant.encrypt_public_key
 | |
| 
 | |
|     account = Account.query.first()
 | |
|     assert account.email == "test@test.com"
 | |
|     assert account.name == "Test User"
 | |
|     assert account.password_salt
 | |
|     assert account.password
 | |
|     assert TenantAccountJoin.query.filter_by(account_id=account.id, is_tenant_owner=True).count() == 1
 | |
| 
 | |
|     # check if password is encrypted correctly
 | |
|     salt = account.password_salt.encode()
 | |
|     password_hashed = account.password.encode()
 | |
|     assert account.password == base64.b64encode(hash_password("Abc123456", salt)).decode()
 | |
| 
 | |
| 
 | |
| def test_setup_step2_api_post(test_client,db_session):
 | |
|     # create a tenant, account, and setup file
 | |
|     tenant = Tenant(name="Test Tenant", status="normal")
 | |
|     account = Account(email="test@test.com", name="Test User")
 | |
|     db_session.add_all([tenant, account])
 | |
|     db_session.commit()
 | |
| 
 | |
|     # try to set up with incorrect language
 | |
|     response = test_client.post("/setup/step2", json={
 | |
|         "interface_language": "invalid_language",
 | |
|         "timezone": "Asia/Shanghai"
 | |
|     })
 | |
|     assert response.status_code == 400
 | |
| 
 | |
|     # set up successfully
 | |
|     response = test_client.post("/setup/step2", json={
 | |
|         "interface_language": "en",
 | |
|         "timezone": "Asia/Shanghai"
 | |
|     })
 | |
|     assert response.status_code == 200
 | |
|     assert response.json == {"result": "success", "next_step": "finished"}
 | |
| 
 | |
|     # check if account was updated correctly
 | |
|     account = Account.query.first()
 | |
|     assert account.interface_language == "en"
 | |
|     assert account.timezone == "Asia/Shanghai"
 | |
|     assert account.interface_theme == "light"
 | |
|     assert account.last_login_ip == "127.0.0.1"
 | 
