Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void testFieldsParam() throws ApiException {
Assert.assertTrue("Пустое имя пользователя", StringUtils.isNotBlank(getCurrentUserResponse.getFirstName()));

LOGGER.info("Проверим, что в ответе нет незапрошенного поля");
Assert.assertNull("Пустая фамилия пользователя", getCurrentUserResponse.getLastName());
Assert.assertNull("Не пустая фамилия пользователя", getCurrentUserResponse.getLastName());
LOGGER.info("Учитывается параметр fields и в ответе возвращаются только запрошенные поля");
}
}
147 changes: 143 additions & 4 deletions src/test/java/ru/odnoklassniki/tests/examples/TestGroupGetInfo.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.odnoklassniki.tests.examples;

import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
import ru.odnoklassniki.base.ApiTestBase;
Expand All @@ -17,20 +18,54 @@
/**
* Created by Maksim Egorichev on 5/9/18 at 4:01 PM
*
* Пример теста на метод group.getInfo
* Updated by Dmitriy Tcibisov on 5/18/18 at 15:25 PM
*
* Тесты на метод group.getInfo
*
* Чек-лист:
* 1. Проверка, что метод сессионный и требует указания access_token
* 2. Проверка, что метод выполняется без ошибок при корректных параметрах uids и fields
* 3. Проверка, что метод выбрасывает исключение при некорректном параметре uids
* 4. Проверка, что метод выбрасывает исключение при отсутствии обязательного параметра uids
* 5. Проверка, что метод выбрасывает исключение при отсутствии обязательного параметра fields
* 6. Проверка, что учитывается параметр fields и в ответе возвращаются только запрошенные поля
* 7. Проверка, что метод выбрасывает исключение при параметре move_to_top = true и более чем одной группе в параметре uids
*/
public class TestGroupGetInfo extends ApiTestBase {
private static final Logger LOGGER = Logger.getLogger(TestGroupGetInfo.class.getSimpleName());
private static final String UNCORRECT_GROUP_ID = "Incorrect";
private static final String GROUP_ID = "53245288710321";
private static final String GROUP_NAME = "Технополис OK (Mail. Ru) и Политеха";
private static final GroupBeanField[] FIELDS = new GroupBeanField[]{GroupBeanField.UID, GroupBeanField.NAME};
private static final String ERROR_INCORRECT_UIDS = "PARAM : Invalid UID value";
private static final String ERROR_NO_SESSION = "PARAM : Missed required parameter: access_token";
private static final String ERROR_NO_UIDS = "PARAM : Missing required parameter uids";
private static final String ERROR_NO_FIELDS = "PARAM : Missing required parameter fields";
private static final String ERROR_INCORRECT_USE_MOVE_TO_TOP = "PARAM : Param 'move_to_top' can be true for single group only";

/**
* 1. Проверка, что метод сессионный и требует указания access_token
*/
@Test
public void testMethodThrowsExceptionWhenSessionIsNotSet() {
LOGGER.info("Проверим, что метод сессионный и требует указания access_token");
try {
LOGGER.info("Вызовем метод без сессии");
okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID}, FIELDS);
Assert.fail("Метод не кинул ошибку при отсутствии пользовательской сессии");
} catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её текст");
Assert.assertEquals("Неверная ошибка при вызове без сессии", ERROR_NO_SESSION, e.getApiErrorInfo().getErrorMessage());
}
LOGGER.info("Метод сессионный и кидает верную ошибку при вызове без сессии");
}

/**
* Пример теста на метод group.getInfo
* 2. Проверка, что метод выполняется без ошибок при корректных параметрах uids и fields
*/
@Test
public void testGroupGetInfoExample() throws ApiException {
LOGGER.info("Получим данные об одной группе с помощью метода group.getInfo");
public void testMethodNoThrowsExceptionWhenUidsAndFieldsAreCorrect() throws ApiException {
LOGGER.info("Проверим, что метод отдаёт верные данные при корректных uids и fields");
bindDefaultUserSession();

GroupBean[] groupBeans = okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID}, FIELDS);
Expand All @@ -48,5 +83,109 @@ public void testGroupGetInfoExample() throws ApiException {
GroupBean groupBean = groupBeans[0];
Assert.assertEquals("Неверный id группы", GROUP_ID, groupBean.getUid());
Assert.assertEquals("Неверное название группы", GROUP_NAME, groupBean.getName());

LOGGER.info("Метод выполняется без ошибок и отдаёт корректные данные при введённых uids и fields");
}

/**
* 3. Проверка, что метод выбрасывает исключение при некорректном параметре uids
*/
@Test
public void testMethodThrowsExceptionWhenUidsIsIncorrect() {
LOGGER.info("Проверим, что метод выбрасывает исключение при некорректном uids");
try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
LOGGER.info("Вызовем метод с некорректным uids");
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Авторизацию лучше вытащить из try-catch. По возможности в этом блоке надо распологать только код, при выполнении которого ожидается ошибка. Логирование тоже можно вынести, но допускается и в try-catch

okApi.getGroupService().getGroupInfo(new String[]{UNCORRECT_GROUP_ID}, FIELDS);
Assert.fail("Метод не кинул ошибку при некорректном uids");
}
catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её текст");
Assert.assertTrue("Неверная ошибка при вызове с некорректным uids",
e.getApiErrorInfo().getErrorMessage().startsWith(ERROR_INCORRECT_UIDS));
}
LOGGER.info("Метод ожидает корректные uids и выбрасывает верную ошибку при вызове с некорректным uids");
}

/**
* 4. Проверка, что метод выбрасывает исключение при отсутствии обязательного параметра uids
*/
@Test
public void testMethodThrowsExceptionWhenUidIsNotSend() {
LOGGER.info("Проверим, что метод требует указания uids");
try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
LOGGER.info("Вызовем метод без указания uids");
okApi.getGroupService().getGroupInfo(null, FIELDS);
Assert.fail("Метод не кинул ошибку при отсутствии uids");
} catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её текст");
Assert.assertEquals("Неверная ошибка при вызове без указания uids", ERROR_NO_UIDS, e.getApiErrorInfo().getErrorMessage());
}
LOGGER.info("Метод ожидает uids и кидает верную ошибку при вызове без указания uids");
}

/**
* 5. Проверка, что метод выбрасывает исключение при отсутствии обязательного параметра fields
*/
@Test
public void testMethodThrowsExceptionWhenFieldsIsNotSend() {
LOGGER.info("Проверим, что метод требует указания fields");
try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
LOGGER.info("Вызовем метод без указания fields");
okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID}, null);
Assert.fail("Метод не кинул ошибку при отсутствии fields");
} catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её текст");
Assert.assertEquals("Неверная ошибка при вызове без указания fields", ERROR_NO_FIELDS, e.getApiErrorInfo().getErrorMessage());
}
LOGGER.info("Метод ожидает fields и кидает верную ошибку при вызове без указания fields");
}

/**
* 6. Проверка, что учитывается параметр fields и в ответе возвращаются только запрошенные поля
*/
@Test
public void testFieldsParam() throws ApiException {
LOGGER.info("Проверим, что учитывается параметр fields и в ответе возвращаются только запрошенные поля");

LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();

GroupBean[] groupBeans = okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID}, new GroupBeanField[]{GroupBeanField.NAME});
GroupBean groupBean = groupBeans[0];

LOGGER.info("Проверим, что в ответе есть запрошенное поле");
Assert.assertTrue("Пустое название группы", StringUtils.isNotBlank(groupBean.getName()));
LOGGER.info("Проверим, что в ответе нет незапрошенного поля");
Assert.assertNull("Не пустое id группы", groupBean.getUid());

LOGGER.info("Учитывается параметр fields и в ответе возвращаются только запрошенные поля");
}

/**
* 7. Проверка, что метод выбрасывает исключение при параметре move_to_top = true и более чем одной группе в параметре uids
*/
@Test
public void testMethodThrowsExceptionWhenMoveToTopAndManyOfUidsIsSend() {
LOGGER.info("Проверим, что метод выбрасывает исключение при вызове move_to_top с более чем одной группой");
try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
LOGGER.info("Вызовем метод с move_to_top и более чем одной группой");
okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID, GROUP_ID}, FIELDS, true);
Assert.fail("Метод не кинул ошибку при вызове move_to_top с более чем одной группой");
}
catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её текст");
Assert.assertEquals("Неверная ошибка при вызове move_to_top с более чем одной группой",
e.getApiErrorInfo().getErrorMessage(), ERROR_INCORRECT_USE_MOVE_TO_TOP);
}
LOGGER.info("Метод ожидает один uid при использовании параметра move_to_top = true и выбрасывает верную ошибку в противном случае");
}

}
Loading