Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.46 KB | None | 0 0
  1. import datetime
  2. import random
  3. import unittest
  4. from uuid import uuid4
  5.  
  6. from metasdk import MetaApp
  7. from metasdk.apiclient import ApiClient
  8.  
  9. api = ApiClient.build_from_developer_settings("accountmanagement", "v1beta1")
  10. api.host = "http://localhost:8083"
  11. # api.host = "http://accountmanagement.apis.devision.io:80"
  12.  
  13. DEFAULT_DATA = {"access_scope": {"client_id": 6224,
  14. "agency_account": "garpun-com2",
  15. "operation_id": str(uuid4())},
  16. "engine": "yandex_direct",
  17. "account_name": "test",
  18. "currency": "RUB",
  19. "first_name": "first_name",
  20. "last_name": "last_name",
  21. "email": "d.gomonuk@real.ru",
  22. "date_time_zone": "Europe/Moscow",
  23. "parent_account_name": "3839668515",
  24. }
  25.  
  26. ERROR_MSG = """Сценарий = {name}
  27. Testing value = {testing_value}
  28. Exp. result = {expected_result}
  29. Act. result = {result}
  30. """
  31.  
  32.  
  33. class TestStringMethods(unittest.TestCase):
  34.  
  35. @classmethod # Метод запускается один раз перед всеми тестами
  36. def setUpClass(cls):
  37. # Перед тестами в таблицу adplatform.public.external_connections записали логин
  38. # (garpun-pm@realweb.ru) от Google Tester (company_id=8561)
  39. META = MetaApp(include_worker=False)
  40. db = META.db(db_alias="meta")
  41. query_select = """UPDATE adplatform.public.external_connections
  42. SET login='garpun-pm@realweb.ru'
  43. WHERE company_id=8561 AND system_id='google' """
  44. db.update(query_select, {})
  45.  
  46. def test_google_positive_create_account(self):
  47. new_data = DEFAULT_DATA.copy()
  48. new_data["access_scope"]["client_id"] = 6224
  49. # new_data["access_scope"]["operation_id"] = str(uuid4())
  50.  
  51. # new_data["access_scope"]["agency_account"] = "testgarpi@gmail.com"
  52. new_data["access_scope"]["agency_account"] = "garpun-pm@realweb.ru"
  53. new_data["engine"] = "GOOGLE_ADS"
  54. new_data["account_name"] = "test_" + datetime.date.today().__str__()
  55. resp = api.post("account/add", post_data=new_data)
  56. self.assertIn(member=new_data["account_name"],
  57. container=resp.get("rawResponse", {}),
  58. msg=ERROR_MSG.format(name="Создание аккаунта в 'Google Ads'",
  59. testing_value=("(account_name) " + new_data["account_name"]),
  60. expected_result="Created successfully",
  61. result=resp.get("message")))
  62.  
  63. def test_negative_engine(self):
  64. expected_result = "Authentication data for agency not found"
  65. testing_value = "nonexistent_engine"
  66. new_data = DEFAULT_DATA.copy()
  67. new_data["engine"] = testing_value
  68. resp = api.post("account/add", post_data=new_data)
  69. self.assertEqual(first=resp["message"], second=expected_result,
  70. msg=ERROR_MSG.format(name="Несуществующее поле 'engine' (yandex_direct/GOOGLE_ADS)",
  71. testing_value=testing_value,
  72. expected_result=expected_result,
  73. result=resp["message"]))
  74.  
  75. def test_negative_email(self):
  76. expected_result = "INVALID_ARGUMENT: Not valid email."
  77. testing_value = "nonexistent_email"
  78. new_data = DEFAULT_DATA.copy()
  79. new_data["email"] = testing_value
  80. resp = api.post("account/add", post_data=new_data)
  81. self.assertEqual(first=resp["message"], second=expected_result,
  82. msg=ERROR_MSG.format(name="Несуществующий 'email",
  83. testing_value=testing_value,
  84. expected_result=expected_result,
  85. result=resp["message"]))
  86.  
  87. def test_negative_uuid(self):
  88. expected_result = "INVALID_ARGUMENT: Operation_id must be uuid."
  89. testing_value = "123456"
  90. new_data = DEFAULT_DATA.copy()
  91. new_data["access_scope"]["operation_id"] = testing_value
  92. resp = api.post("account/add", post_data=new_data)
  93. self.assertEqual(first=resp["message"], second=expected_result,
  94. msg=ERROR_MSG.format(name="'operation_id' не в формате 'uuid'",
  95. testing_value=testing_value,
  96. expected_result=expected_result,
  97. result=resp["message"]))
  98.  
  99. def test_negative_required(self):
  100. expected_result = "API didn't receive one of the required parameters: 'first_name'."
  101. testing_value = "first_name"
  102. new_data = DEFAULT_DATA.copy()
  103. new_data.pop(testing_value)
  104. resp = api.post("account/add", post_data=new_data)
  105.  
  106. self.assertEqual(first=resp["message"], second=expected_result,
  107. msg=ERROR_MSG.format(name="Проверка API на обработку запроса без одного из обязательных полей",
  108. testing_value=testing_value,
  109. expected_result=expected_result,
  110. result=resp["message"]))
  111.  
  112. def test_negative_access_scope(self):
  113. expected_result = "Authentication data for agency not found"
  114. new_data = DEFAULT_DATA.copy()
  115. new_data["access_scope"] = {"client_id": 10000,
  116. "agency_account": "codabra",
  117. "operation_id": "609fda07-cb8f-4b1b-8b14-06e4ca92a74a"}
  118. resp = api.post("account/add", post_data=new_data)
  119. self.assertEqual(first=resp["message"], second=expected_result,
  120. msg=ERROR_MSG.format(name="Проверка запроса с несуществующего аккаунта",
  121. testing_value="(неверные данные 'access_scope'",
  122. expected_result=expected_result,
  123. result=resp["message"]))
  124.  
  125. def test_negative_long_acc_name(self):
  126. expected_result = "Допустимая длина поля Login - 30 символов"
  127. testing_value = "account_name_length_more_than_30"
  128. new_data = DEFAULT_DATA.copy()
  129. new_data["access_scope"]["agency_account"] = "garpun-com2"
  130. new_data["engine"] = "yandex_direct"
  131. new_data["account_name"] = testing_value
  132. resp = api.post("account/add", post_data=new_data)
  133. self.assertIn(member=expected_result, container=resp["message"],
  134. msg=ERROR_MSG.format(name="Создание аккаунта через Яндекс с логином длиннее 30 символов",
  135. testing_value=testing_value,
  136. expected_result=expected_result,
  137. result=resp.get("message")))
  138.  
  139. def test_negative_google_wrong_parentAccName(self):
  140. expected_result = "Parameter parent_account_name is not valid. This should be a valid MCC Adwords."
  141. testing_value = "wrong_parent_acc_name"
  142. new_data = DEFAULT_DATA.copy()
  143. new_data["access_scope"]["agency_account"] = "garpun-pm@realweb.ru"
  144. new_data["engine"] = "GOOGLE_ADS"
  145. new_data["account_name"] = "test_" + datetime.date.today().__str__()
  146. new_data["parent_account_name"] = testing_value
  147. resp = api.post("account/add", post_data=new_data)
  148. self.assertEqual(first=resp["message"], second=expected_result,
  149. msg=ERROR_MSG.format(name="Создание через 'Google Ads' с несущесвующим 'parent_account_name'",
  150. testing_value=testing_value,
  151. expected_result=expected_result,
  152. result=resp.get("message")))
  153.  
  154. # @unittest.skip("Этот тест создает аккаунт и должен запускаться осознанно.")
  155. # def test_google_positive_create_account(self):
  156. # new_data = DEFAULT_DATA.copy()
  157. # # new_data["access_scope"]["client_id"] = 6224
  158. # # new_data["access_scope"]["operation_id"] = str(uuid4())
  159. #
  160. # # new_data["access_scope"]["agency_account"] = "testgarpi@gmail.com"
  161. # new_data["access_scope"]["agency_account"] = "garpun-pm@realweb.ru"
  162. # new_data["engine"] = "GOOGLE_ADS"
  163. # new_data["account_name"] = "test_" + datetime.date.today().__str__()
  164. # resp = api.post("account/add", post_data=new_data)
  165. # self.assertIn(member=new_data["account_name"],
  166. # container=resp.get("rawResponse", {}),
  167. # msg=ERROR_MSG.format(name="Создание аккаунта в 'Google Ads'",
  168. # testing_value=("(account_name) " + new_data["account_name"]),
  169. # expected_result="Created successfully",
  170. # result=resp.get("message")))
  171.  
  172. @unittest.skip("Этот тест создает аккаунт и должен запускаться осознанно.")
  173. def test_yandex_positive_create_account(self):
  174. new_data = DEFAULT_DATA.copy()
  175. new_data["account_name"] = "test_" + str(random.randint(1000, 9999))
  176. resp = api.post("account/add", post_data=new_data)
  177. self.assertIn(member=new_data["account_name"],
  178. container=resp.get("rawResponse", {}),
  179. msg=ERROR_MSG.format(name="Создание аккаунта в 'Yandex Direct'",
  180. testing_value=("(account_name) " + new_data["account_name"]),
  181. expected_result="Created successfully",
  182. result=resp.get("message")))
  183.  
  184.  
  185. if __name__ == "__main__":
  186. unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement