class AdminSystemTestBase(APITestCase): temp_admin_username = "******" temp_admin_password = "******" password = make_password(temp_admin_password) factory = PayunionFactory() def set_test_admin(self, is_super=False, permissions=None): test_admin = self.factory.create_system_admin( username=self.temp_admin_username, password=self.password, status=SYSTEM_USER_STATUS['USING'], permissions=permissions, is_super=is_super) sys_admin = SystemAdmin.objects.get(pk=test_admin.id) self.assertEqual(sys_admin.username, test_admin.username) self.assertEqual(sys_admin.name, test_admin.name) def set_login_status(self, is_super=False, permissions=None): self.set_test_admin(is_super=is_super, permissions=permissions) url = "/api/admin/system_admins/login" data = { "username": self.temp_admin_username, "password": self.temp_admin_password } resp = self.client.post(url, data=data, format='json') self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.json().get("username"), self.temp_admin_username)
def create(cls): if cls.already_created(): return with atomic(): cls.area = Area.objects.order_by('-id').first() # 商户分类 cls.merchant_category = None for p, children in cls.C.categories.items(): parent = cls.factory.create_merchant_category(name=p) for c in children: cls.merchant_category = cls.factory.create_merchant_category( parent=parent, name=c) # 创建业务员 for user in cls.C.marketers: cls.create_marketer(user) # 创建商户 for user in cls.C.merchant_admins: cls.create_merchant(user) # 后台管理员 cls.factory.create_system_admin( username='******', password=make_password('123456'), name='super', status=SYSTEM_USER_STATUS['USING'], is_super=True, )
def test_look_through_merchant_info(self): """ 查看商户信息 """ # 微信小程序获取商户信息 wechat_person_D_token = self.mock_merchant_admin_or_cashier_login_success( self.wechat_person_D) wechat_person_D_merchant_step = MerchantStep(self, wechat_person_D_token) resp = wechat_person_D_merchant_step.me() mini_program_merchant_info = resp.json() # 后台管理员获取商户信息 sysadmin_name = fake.name() sysadmin_password = fake.md5() self.factory.create_system_admin( username=sysadmin_name, is_super=True, password=make_password(sysadmin_password), status=config.SYSTEM_USER_STATUS.USING) sysadmin = LoginStep(self) sysadmin.login(username=sysadmin_name, password=sysadmin_password) sysadmin_merchant_manage_step = MerchantManageStep(self) resp = sysadmin_merchant_manage_step.get_merchant_info( self.merchatn_b.id) sysadmin_merchant_info = resp.json() self.assertEqual(mini_program_merchant_info['id'], sysadmin_merchant_info['id']) self.assertEqual(mini_program_merchant_info['status'], sysadmin_merchant_info['status']) self.assertEqual(mini_program_merchant_info['name'], sysadmin_merchant_info['name']) self.assertEqual(mini_program_merchant_info['area'], str(sysadmin_merchant_info['area']['id'])) self.assertEqual(mini_program_merchant_info['category'], sysadmin_merchant_info['category']['id']) self.assertEqual(mini_program_merchant_info['photo_url'], sysadmin_merchant_info['photo_url']) self.assertEqual(mini_program_merchant_info['description'], sysadmin_merchant_info['description']) self.assertEqual(mini_program_merchant_info['contact_phone'], sysadmin_merchant_info['contact_phone']) self.assertEqual(mini_program_merchant_info['avatar_url'], sysadmin_merchant_info['avatar_url']) self.assertEqual(mini_program_merchant_info['location_lon'], sysadmin_merchant_info['location_lon']) self.assertEqual(mini_program_merchant_info['location_lat'], sysadmin_merchant_info['location_lat']) self.assertEqual(mini_program_merchant_info['address'], sysadmin_merchant_info['address']) self.assertEqual(mini_program_merchant_info['id_card_front_url'], sysadmin_merchant_info['id_card_front_url']) self.assertEqual(mini_program_merchant_info['id_card_back_url'], sysadmin_merchant_info['id_card_back_url']) self.assertEqual(mini_program_merchant_info['license_url'], sysadmin_merchant_info['license_url']) self.assertEqual(mini_program_merchant_info['photo_url'], sysadmin_merchant_info['photo_url'])
def setUpTestData(cls): from test.unittest.system_admin.base_data import create_base_data create_base_data() cls.fake_factory = PayunionFactory() cls.fake_factory.create_system_admin( username='******', is_super=True, password=make_password('abcde'), status=config.SYSTEM_USER_STATUS.USING) cls.inviter = cls.fake_factory.create_marketer( inviter_type=config.MARKETER_TYPES.MARKETER, status=config.SYSTEM_USER_STATUS.USING, account=cls.fake_factory.create_account())
def update(self, instance, validated_data): instance.name = validated_data.get('name', instance.name) instance.permissions = validated_data.get('permissions', instance.permissions) instance.username = validated_data.get('username', instance.username) instance.status = validated_data.get('status', instance.status) password = validated_data.get('password', None) if password is not None: password = make_password(password) instance.password = password instance.save() return instance
def create_system_admin(username, password, name): from common.models import SystemAdmin, LoginStats from common.password_backend import make_password from config import SYSTEM_USER_STATUS login_stats = LoginStats.objects.create( last_success_login=None, # 上次成功登录时间 last_success_ip=None, # 上次成功登录IP last_failed_login=None, # 上次失败登录时间 last_failed_ip=None, # 上次失败登录IP failed_login_count=0) SystemAdmin.objects.create( username=username, # 用户名 password=make_password(password), # 密码 name=name, # 姓名 status=SYSTEM_USER_STATUS.USING, # 状态 is_super=True, # 是否是超级管理员 permissions='', # 权限 login_stats=login_stats, # 登录情况统计 )
def create(self, validated_data): with transaction.atomic(): validated_data['login_stats'] = LoginStats.objects.create() validated_data['password'] = make_password( validated_data['password']) return super().create(validated_data)