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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,4 @@ fabric.properties
src/main/resources/
src/test/java/ru/odnoklassniki/tests/homeWork/
target/
technoatomsample2.iml
techno-atom-sample-2.iml
1 change: 0 additions & 1 deletion src/main/java/ru/odnoklassniki/ApiClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import ru.odnoklassniki.common.ApiException;
import ru.odnoklassniki.requests.ApiRequest;
import ru.odnoklassniki.requests.ApiRequestConstants;
import ru.odnoklassniki.responses.ApiResponse;

import java.io.IOException;
import java.util.Arrays;
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/ru/odnoklassniki/common/ApiMethod.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
public enum ApiMethod {
USERS_GET_CURRENT_USER("users", "getCurrentUser"),
USERS_GET_INFO_BY("users", "getInfoBy"),

GROUP_GET_INFO("group", "getInfo"),
GROUP_GET_USER_GROUPS_V2("group", "getUserGroupsV2"),
;
Expand All @@ -28,4 +27,4 @@ public String getMethodGroup() {
public String getMethodName() {
return methodName;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@ public GroupGetUserGroupsV2Request() {
public GroupGetUserGroupsV2Request(Integer count) {
this.setApiMethod(ApiMethod.GROUP_GET_USER_GROUPS_V2).addParam(ApiRequestConstants.COUNT_PARAM, count);
}

public GroupGetUserGroupsV2Request(String uid) {
this.setApiMethod(ApiMethod.GROUP_GET_USER_GROUPS_V2).addParam(ApiRequestConstants.UID_PARAM, uid);
}
}
9 changes: 6 additions & 3 deletions src/main/java/ru/odnoklassniki/services/GroupService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@
import ru.odnoklassniki.requests.group.GroupGetUserGroupsV2Request;
import ru.odnoklassniki.responses.group.GroupGetUserGroupsV2Response;

/**
* Created by Maksim Egorichev on 5/7/18 at 11:23 AM
*/

public class GroupService {
private ApiClient apiClient;

Expand All @@ -37,4 +35,9 @@ public GroupGetUserGroupsV2Response getUserGroupsV2(Integer count) throws ApiExc
GroupGetUserGroupsV2Request groupGetUserGroupsV2Request = new GroupGetUserGroupsV2Request(count);
return apiClient.executeRequest(groupGetUserGroupsV2Request, GroupGetUserGroupsV2Response.class);
}

public GroupGetUserGroupsV2Response getUserGroupsV2(String uid) throws ApiException {
GroupGetUserGroupsV2Request getUserGroupsV2Request = new GroupGetUserGroupsV2Request(uid);
return apiClient.executeRequest(getUserGroupsV2Request, GroupGetUserGroupsV2Response.class);
}
}
170 changes: 170 additions & 0 deletions src/test/java/ru/odnoklassniki/homework/group/TestGetInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
package ru.odnoklassniki.homework.group;

import org.junit.Assert;
import org.junit.Test;
import ru.odnoklassniki.base.ApiTestBase;
import ru.odnoklassniki.common.ApiException;
import ru.odnoklassniki.common.group.GroupBean;
import ru.odnoklassniki.common.group.GroupBeanField;
import ru.odnoklassniki.tests.examples.TestGroupGetInfo;

import java.util.logging.Logger;


/**
* Created by Maxim Vyshegorodtsev
*
* Чек-лист проверок api метода group.getInfo
*
* 1. Проверка на то, что сессия обязательна для внешних приложений
*
* 2. Проверка на то, что параметр uids обязателен
*
* 3. Проверка на то, что параметр fields обязателен
*
* 4. Проверка на то, что метод выбросит ошибку, если ввести невалидные параметры
*
* 5. Проверка на то, что метод корректно отработает, если его вызвать с параметрами uids, fields (по дефоолту)
*
* 6. Проверка на то, что переданный в метод параметр move_to_top имеет смысл, только если запрашиваемая группа единственная
*/

public class TestGetInfo extends ApiTestBase {
private static final Logger LOGGER = Logger.getLogger(TestGroupGetInfo.class.getSimpleName());
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_INVALID = "PARAM : Invalid";
private static final String GROUP_ID = "53245288710321";
private static final GroupBeanField[] FIELDS = new GroupBeanField[]{GroupBeanField.UID, GroupBeanField.NAME};
private static final String GROUP_NAME = "Технополис OK (Mail. Ru) и Политеха";
private static final String ERROR_MOVE_TO_TOP_PARAM = "PARAM : Param 'move_to_top' can be true for single group only";
private static final String[] GROUP_IDS = new String[]{"3357785645192", "51722779689102"};

/**
* Проверка на то, что сессия обязательна для внешних приложений
*/
@Test
public void testMethodThrowsExceptionWhenSessionIsNotSet() {
LOGGER.info("Проверим, что метод сессионный и требует указания access_token");

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

/**
* Проверка на то, что параметр uids обязателен
*/

@Test
public void testParamUidsIsRequired() {
LOGGER.info("Проверим, что метод выбросит исключение, если не указать uids");

try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
okApi.getGroupService().getGroupInfo(new String[]{}, new GroupBeanField[]{});
Assert.fail("Метод не кинул исключение при остутствии uids");
} catch (ApiException e) {
LOGGER.info("Получили ошибку, проверим её сообщение");
Assert.assertEquals("Неверная ошибка при вызове без uids", ERROR_NO_UIDS, e.getApiErrorInfo().getErrorMessage());
}

LOGGER.info("Параметр uids обязательный");
}

/**
* Проверка на то, что параметр fields обязателен
*/

@Test
public void testParamFieldsIsRequired() {
LOGGER.info("Проверим, что метод выкинет ошибку, если не указать fields");

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

LOGGER.info("Параметр fields обязателен");
}

/**
* Проверка на то, что метод выбросит ошибку, если ввести невалидные параметры
*/

@Test
public void testMethodOnInvalidParams() {
LOGGER.info("Проверим, что метод выкинет ошибку, если не ввести невалидные данные");

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

LOGGER.info("Метод кидает ошибки при вводе невалидных параметров");
}

/**
* Проверка на то, что метод корректно отработает, если его вызвать с параметрами uids, fields (по дефоолту)
*/

@Test
public void testMethodWithValidUidsAndFields() throws ApiException {
LOGGER.info("Проверим, что метод корректно отработает с параметрами uids, fields");

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

GroupBean[] groupBeans = okApi.getGroupService().getGroupInfo(new String[]{GROUP_ID}, FIELDS);

LOGGER.info("Проверим, что в ответе нужные данные о группе");
Assert.assertNotNull("Метод выдал null", groupBeans);
Assert.assertEquals("Неверное количество групп в ответе", groupBeans.length, 1);

Assert.assertEquals("Неверный id группы", GROUP_ID, groupBeans[0].getUid());
Assert.assertEquals("Неверное название группы", GROUP_NAME, groupBeans[0].getName());

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

/**
* Проверка на то, что переданный в метод параметр move_to_top имеет смысл, только если запрашиваемая группа единственная
*/

@Test
public void testMethodWithUidsAndFieldsAndMoveToTop() throws ApiException {
LOGGER.info("Проверим, что метод кидает ошибку, если передать move_to_top = true и запросить больше одной группы");

try {
LOGGER.info("Вызовем метод в сессии пользователя");
bindDefaultUserSession();
okApi.getGroupService().getGroupInfo(GROUP_IDS, FIELDS, true);
Assert.fail("Метод не выкинул ошибку");
}
catch (ApiException e) {
LOGGER.info("Получиили ошибку, проверим её сообщение");
Assert.assertEquals("Неверная ошибка", ERROR_MOVE_TO_TOP_PARAM, e.getApiErrorInfo().getErrorMessage());
}

LOGGER.info("Параметр move_to_top имеет смысл только для одной запрашиваемой группы");
}
}
Loading