瀏覽代碼

walle 2.0 54 unittest :star:

walle 6 年之前
父節點
當前提交
6b340a11ba

+ 80 - 14
tests/test_00_base.py

@@ -4,19 +4,37 @@
 from copy import deepcopy
 
 import pytest
+from utils import *
 from walle.model.menu import MenuModel
 from walle.model.user import UserModel
-from werkzeug.security import generate_password_hash
 from walle.service.rbac.role import *
+from werkzeug.security import generate_password_hash
+
+#: 1 创建 super, owner
+
+#: 2 登录 super
 
-user_data_login = {
-    'username': u'wushuiyong',
-    'email': u'wushuiyong@walle-web.io',
+#: 3 创建 space, users
+
+#: 4 登录 owner
+
+user_super = {
+    'username': u'super',
+    'email': u'Super@walle-web.io',
     'password': u'WU123shuiyong',
 }
+
+user_owner = {
+    'username': u'owner',
+    'email': u'Owner@walle-web.io',
+    'password': u'WU123shuiyong',
+}
+
+user_data_login = user_owner
+
 space_base = {
     'name': u'walle-2.0',
-    'user_id': u'1',
+    'user_id': 1,
 }
 
 
@@ -520,20 +538,68 @@ class TestAccess:
             access.save()
 
 
+#: 1 创建 super, owner
 class TestUser:
-    user_super_login = deepcopy(user_data_login)
+    user_super_login = deepcopy(user_super)
+    user_owner_login = deepcopy(user_owner)
 
-    def test_add(self):
+    def test_add_super(self):
         self.user_super_login['role'] = SUPER
         self.user_super_login['password'] = generate_password_hash(self.user_super_login['password'])
         user = UserModel(**self.user_super_login)
         user.save()
 
+    def test_add_owner(self):
+        self.user_owner_login['role'] = OWNER
+        self.user_owner_login['password'] = generate_password_hash(self.user_owner_login['password'])
+        user = UserModel(**self.user_owner_login)
+        user.save()
+
+
+#: 2 登录 super
+@pytest.mark.usefixtures('db')
+class TestApiPassport:
+    """api role testing"""
+    uri_prefix = '/api/passport'
+
+    user_id = {}
+
+    user_data = deepcopy(user_super)
+
+    def test_base_fetch(self):
+        u = UserModel.get_by_id(1)
+
+    def test_login_super(self, user, testapp, client, db):
+        """create successful."""
+
+        resp = client.post('%s/login' % (self.uri_prefix), data=self.user_data)
+
+        response_success(resp)
+
+        del self.user_data['password']
+        compare_req_resp(self.user_data, resp)
+
+
+#: 3 创建 space, users
+@pytest.mark.usefixtures('db')
+class TestApiSpaceInit:
+    """api role testing"""
+    uri_prefix = '/api/space'
+
+    user_id = {}
+
+    #: user list (1, 2, 3)
+    space_data = {
+        'name': u'walle-web 2.0',
+        'user_id': 2,
+    }
+
+    def test_base_create_space(self, user, testapp, client, db):
+        """create successful."""
+        # 1.create project
+        resp = client.post('%s/' % (self.uri_prefix), data=self.space_data)
 
-# class TestSpace:
-#     user_data_login = deepcopy(user_data_login)
-#
-#     def test_add(self):
-#         self.user_data_login['password'] = generate_password_hash(user_data_login['password'])
-#         user = UserModel(**self.user_data_login)
-#         user.save()
+        response_success(resp)
+        # compare_req_resp(self.space_data, resp)
+        current_app.logger.info(resp_json(resp)['data'])
+        self.space_data['space_id'] = resp_json(resp)['data']['id']

+ 2 - 1
tests/test_00_login.py

@@ -9,6 +9,7 @@ from walle.model.user import UserModel
 from copy import deepcopy
 from test_00_base import user_data_login
 
+#: 4 登录 owner
 @pytest.mark.usefixtures('db')
 class TestApiPassport:
     """api role testing"""
@@ -20,7 +21,7 @@ class TestApiPassport:
 
 
     def test_fetch(self):
-        u = UserModel.get_by_id(1)
+        u = UserModel.get_by_id(2)
 
     def test_login(self, user, testapp, client, db):
         """create successful."""

+ 3 - 0
tests/test_01_api_environment.py

@@ -17,16 +17,19 @@ class TestApiEnv:
 
     env_data = {
         'env_name': u'测试环境',
+        'space_id': 1,
     }
 
     user_name_2 = u'Production'
 
     env_data_2 = {
         'env_name': u'Production',
+        'space_id': 1,
     }
 
     env_data_remove = {
         'env_name': u'environment_remove',
+        'space_id': 1,
     }
 
     def test_create(self, user, testapp, client, db):

+ 1 - 1
tests/test_03_api_user.py

@@ -104,7 +104,7 @@ class TestApiUser:
             'size': 1,
         }
         response = {
-            'count': 6,
+            'count': 7,
         }
         resp = client.get('%s/?%s' % (self.uri_prefix, urllib.urlencode(query)))
         response_success(resp)

+ 17 - 2
tests/test_05_api_space.py

@@ -3,14 +3,15 @@
 import pytest
 from flask import current_app
 from utils import *
-
-
+from test_00_base import space_base
+from copy import deepcopy
 @pytest.mark.usefixtures('db')
 class TestApiSpace:
     """api role testing"""
     uri_prefix = '/api/space'
 
     user_id = {}
+    space_default_base = deepcopy(space_base)
 
     #: user list (1, 2, 3)
     space_data = {
@@ -33,6 +34,20 @@ class TestApiSpace:
         'members': json.dumps([{"user_id": 1, "role": "MASTER"}, {"user_id": 3, "role": "DEVELOPER"}]),
     }
 
+    def test_setUp(self):
+        pass
+
+
+    # 初始化 space_id=1的用户列表
+    def test_get_update_default_space(self, user, testapp, client):
+        """Login successful."""
+        # 1.update
+        self.space_default_base['members'] = json.dumps([{"user_id": 2, "role": "MASTER"}, {"user_id": 3, "role": "DEVELOPER"}])
+        resp = client.put('%s/%d' % (self.uri_prefix, 1), data=self.space_default_base)
+
+        response_success(resp)
+        self.compare_member_req_resp(self.space_data, resp)
+
     def test_create(self, user, testapp, client, db):
 
         """create successful."""

+ 12 - 0
tests/test_07_api_project.py

@@ -41,6 +41,11 @@ class TestApiProject:
         {"user_id": 3, "role": "MASTER"},
         {"user_id": 2, "role": "DEVELOPER"}
     ]
+    project_data_members_error = [
+        {"user_id": 3, "role": "MASTER"},
+        {"user_id": 2, "role": "DEVELOPER"},
+        {"user_id": 4, "role": "DEVELOPER"},
+    ]
 
     # should be equal to project_data_2.name
     project_name_2 = u'walle-web'
@@ -189,6 +194,13 @@ class TestApiProject:
 
     def test_get_update_members(self, user, testapp, client):
         """Login successful."""
+        from walle.service.code import Code
+        # 1.1 create user group error
+        headers = {'content-type': 'application/json'}
+        resp = client.put('%s/%d/members' % (self.uri_prefix, self.project_data_2['id']), data=json.dumps(self.project_data_members_error), headers=headers)
+        current_app.logger.info(resp)
+
+        response_error(resp, Code.user_not_in_space)
 
         # 1.1 create user group
         headers = {'content-type': 'application/json'}

+ 1 - 1
tests/test_models.py

@@ -24,7 +24,7 @@ class TestFoo:
 class TestEnvironment:
     def test_add(self):
         env_new = EnvironmentModel()
-        env_id = env_new.add(env_name=u'开发环境')
+        env_id = env_new.add(env_name=u'开发环境', space_id=1)
 
     # class TestUser:
     #     """User tests."""