Package ru.org.linux.topic

Source Code of ru.org.linux.topic.GroupPermissionServiceTest

/*
* Copyright 1998-2012 Linux.org.ru
*    Licensed under the Apache License, Version 2.0 (the "License");
*    you may not use this file except in compliance with the License.
*    You may obtain a copy of the License at
*
*        http://www.apache.org/licenses/LICENSE-2.0
*
*    Unless required by applicable law or agreed to in writing, software
*    distributed under the License is distributed on an "AS IS" BASIS,
*    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*    See the License for the specific language governing permissions and
*    limitations under the License.
*/

package ru.org.linux.topic;

import org.junit.Test;
import ru.org.linux.group.GroupPermissionService;
import ru.org.linux.section.Section;
import ru.org.linux.section.SectionService;
import ru.org.linux.user.User;

import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

/**
* Created by IntelliJ IDEA.
* User: hizel
* Date: 8/30/11
* Time: 4:27 PM
*/
public class GroupPermissionServiceTest {
  private final GroupPermissionService permissionService = new GroupPermissionService();

  /**
   * Проверка что пользователь МОЖЕТ удалить топик автором которого он является
   * и прошло меньше часа с момента почтинга
   * @throws Exception
   */
  @Test
  public void isDeletableByUserTest1() throws Exception {
    Calendar calendar = Calendar.getInstance();

    ResultSet resultSet = mock(ResultSet.class);
    when(resultSet.getInt("postscore")).thenReturn(-9999);
    when(resultSet.wasNull()).thenReturn(false);
    calendar.setTime(new Date());
    calendar.add(Calendar.MINUTE, -10);
    // commitdate, lastmod
    when(resultSet.getTimestamp(anyString())).thenReturn(new Timestamp(calendar.getTimeInMillis()));
    // commitby, sectionid, stat1, ua_id,
    when(resultSet.getInt(anyString())).thenReturn(13);
    // gtitle, urlname, message, postip,
    when(resultSet.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSet.getBoolean(anyString())).thenReturn(false);

    when(resultSet.getInt("section")).thenReturn(3); // Галлерея
    when(resultSet.getBoolean("moderate")).thenReturn(true);
    when(resultSet.getInt("stat1")).thenReturn(0);

    User user = mock(User.class);
    when(user.isModerator()).thenReturn(false);
    when(user.getId()).thenReturn(13);

    Topic message = new Topic(resultSet);

    assertFalse(user.isModerator());
    assertEquals(user.getId(), resultSet.getInt("userid"));
    assertEquals(user.getId(), message.getUid());

    assertTrue(permissionService.isDeletable(message, user));
  }
  /**
   * Проверка что пользователь НЕМОЖЕТ удалить топик автором которого он является
   * и прошло больше часа с момента почтинга
   * @throws Exception
   */
  @Test
  public void isDeletableByUserTest2() throws Exception {
    Calendar calendar = Calendar.getInstance();

    ResultSet resultSet = mock(ResultSet.class);
    when(resultSet.getInt("postscore")).thenReturn(-9999);
    when(resultSet.wasNull()).thenReturn(false);
    calendar.setTime(new Date());
    calendar.add(Calendar.MINUTE, -70);
    // commitdate, lastmod
    when(resultSet.getTimestamp(anyString())).thenReturn(new Timestamp(calendar.getTimeInMillis()));
    // commitby, sectionid, stat1, ua_id,
    when(resultSet.getInt(anyString())).thenReturn(13);
    // gtitle, urlname, message, postip,
    when(resultSet.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSet.getBoolean(anyString())).thenReturn(false);

    when(resultSet.getInt("section")).thenReturn(3); // Галлерея
    when(resultSet.getBoolean("moderate")).thenReturn(true);

    User user = mock(User.class);
    when(user.isModerator()).thenReturn(false);
    when(user.getId()).thenReturn(13);

    Topic message = new Topic(resultSet);

    assertFalse(user.isModerator());
    assertEquals(user.getId(), resultSet.getInt("userid"));
    assertEquals(user.getId(), message.getUid());

    assertFalse(permissionService.isDeletable(message, user));
  }

  /**
   * Проверка что пользователь НЕМОЖЕТ удалить топик автором которого он неявляется
   * и прошло больше часа с момента постинга
   * @throws Exception
   */
  @Test
  public void isDeletableByUserTest3() throws Exception {
    Calendar calendar = Calendar.getInstance();

    ResultSet resultSet = mock(ResultSet.class);
    when(resultSet.getInt("postscore")).thenReturn(-9999);
    when(resultSet.wasNull()).thenReturn(false);
    calendar.setTime(new Date());
    calendar.add(Calendar.MINUTE, -70);
    // commitdate, lastmod
    when(resultSet.getTimestamp(anyString())).thenReturn(new Timestamp(calendar.getTimeInMillis()));
    // commitby, sectionid, stat1, ua_id,
    when(resultSet.getInt(anyString())).thenReturn(13);
    // gtitle, urlname, message, postip,
    when(resultSet.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSet.getBoolean(anyString())).thenReturn(false);

    when(resultSet.getInt("section")).thenReturn(3); // Галлерея
    when(resultSet.getBoolean("moderate")).thenReturn(true);

    User user = mock(User.class);
    when(user.isModerator()).thenReturn(false);
    when(user.getId()).thenReturn(14);

    Topic message = new Topic(resultSet);

    assertFalse(user.isModerator());
    assertFalse(user.getId() == resultSet.getInt("userid"));
    assertFalse(user.getId() == message.getUid());

    assertFalse(permissionService.isDeletable(message, user));
  }

  /**
   * Проверка что пользователь НЕМОЖЕТ удалить топик автором которого он неявляется
   * и прошло больше часа с момента постинга
   * @throws Exception
   */
  @Test
  public void isDeletableByUserTest4() throws Exception {
    Calendar calendar = Calendar.getInstance();

    ResultSet resultSet = mock(ResultSet.class);
    when(resultSet.getInt("postscore")).thenReturn(-9999);
    when(resultSet.wasNull()).thenReturn(false);
    calendar.setTime(new Date());
    calendar.add(Calendar.MINUTE, -5);
    // commitdate, lastmod
    when(resultSet.getTimestamp(anyString())).thenReturn(new Timestamp(calendar.getTimeInMillis()));
    // commitby, sectionid, stat1, ua_id,
    when(resultSet.getInt(anyString())).thenReturn(13);
    // gtitle, urlname, message, postip,
    when(resultSet.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSet.getBoolean(anyString())).thenReturn(false);

    when(resultSet.getInt("section")).thenReturn(3); // Галлерея
    when(resultSet.getBoolean("moderate")).thenReturn(true);

    User user = mock(User.class);
    when(user.isModerator()).thenReturn(false);
    when(user.getId()).thenReturn(14);

    Topic message = new Topic(resultSet);

    assertFalse(user.isModerator());
    assertFalse(user.getId() == resultSet.getInt("userid"));
    assertFalse(user.getId() == message.getUid());

    assertFalse(permissionService.isDeletable(message, user));
  }

  /**
   * Проверка для модератора
   * @throws Exception
   */
  @Test
  public void isDeletableByModeratorTest() throws Exception {
    Calendar calendar = Calendar.getInstance();

    calendar.setTime(new Date());
    calendar.add(Calendar.MONTH, -2);
    long oldTime = calendar.getTimeInMillis();

    calendar.setTime(new Date());
    calendar.add(Calendar.DAY_OF_MONTH, -2);
    long newTime = calendar.getTimeInMillis();


    ResultSet resultSetModerateOld = mock(ResultSet.class);
    when(resultSetModerateOld.getInt("postscore")).thenReturn(-9999);
    when(resultSetModerateOld.wasNull()).thenReturn(false);
    // commitdate, lastmod
    when(resultSetModerateOld.getTimestamp(anyString())).thenReturn(new Timestamp(oldTime));
    // commitby, sectionid, stat1, ua_id,
    when(resultSetModerateOld.getInt(anyString())).thenReturn(13);
    when(resultSetModerateOld.getInt("section")).thenReturn(1);   
    // gtitle, urlname, message, postip,
    when(resultSetModerateOld.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSetModerateOld.getBoolean(anyString())).thenReturn(false);
    when(resultSetModerateOld.getBoolean("moderate")).thenReturn(true);
    when(resultSetModerateOld.getTimestamp("postdate")).thenReturn(new Timestamp(oldTime));


    ResultSet resultSetNotModerateOld = mock(ResultSet.class);
    when(resultSetNotModerateOld.getInt("postscore")).thenReturn(-9999);
    when(resultSetNotModerateOld.wasNull()).thenReturn(false);
    // commitdate, lastmod
    when(resultSetNotModerateOld.getTimestamp(anyString())).thenReturn(new Timestamp(oldTime));
    // commitby, sectionid, stat1, ua_id,
    when(resultSetNotModerateOld.getInt(anyString())).thenReturn(2);
    // gtitle, urlname, message, postip,
    when(resultSetNotModerateOld.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSetNotModerateOld.getBoolean(anyString())).thenReturn(false);
    when(resultSetNotModerateOld.getBoolean("moderate")).thenReturn(false);
    when(resultSetNotModerateOld.getTimestamp("postdate")).thenReturn(new Timestamp(oldTime));


    ResultSet resultSetModerateNew = mock(ResultSet.class);
    when(resultSetModerateNew.getInt("postscore")).thenReturn(-9999);
    when(resultSetModerateNew.wasNull()).thenReturn(false);
    // commitdate, lastmod
    when(resultSetModerateNew.getTimestamp(anyString())).thenReturn(new Timestamp(newTime));
    // commitby, sectionid, stat1, ua_id,
    when(resultSetModerateNew.getInt(anyString())).thenReturn(1);
    // gtitle, urlname, message, postip,
    when(resultSetModerateNew.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSetModerateNew.getBoolean(anyString())).thenReturn(false);
    when(resultSetModerateNew.getBoolean("moderate")).thenReturn(true);
    when(resultSetModerateNew.getTimestamp("postdate")).thenReturn(new Timestamp(newTime));


    ResultSet resultSetNotModerateNew = mock(ResultSet.class);
    when(resultSetNotModerateNew.getInt("postscore")).thenReturn(-9999);
    when(resultSetNotModerateNew.wasNull()).thenReturn(false);
    // commitdate, lastmod
    when(resultSetNotModerateNew.getTimestamp(anyString())).thenReturn(new Timestamp(newTime));
    // commitby, sectionid, stat1, ua_id,
    when(resultSetNotModerateNew.getInt(anyString())).thenReturn(1);
    // gtitle, urlname, message, postip,
    when(resultSetNotModerateNew.getString(anyString())).thenReturn("any");
    // vote, sticky, expired, bbcode, resolved, minor
    when(resultSetNotModerateNew.getBoolean(anyString())).thenReturn(false);
    when(resultSetNotModerateNew.getBoolean("moderate")).thenReturn(false);
    when(resultSetNotModerateNew.getTimestamp("postdate")).thenReturn(new Timestamp(newTime));


    User user = mock(User.class);
    when(user.isModerator()).thenReturn(true);
    when(user.getId()).thenReturn(13);

    // проверка что данные в mock user верные
    assertTrue(user.isModerator());

    Section sectionModerate = mock(Section.class);
    when(sectionModerate.isPremoderated()).thenReturn(true);
    Section sectionNotModerate = mock(Section.class);
    when(sectionNotModerate.isPremoderated()).thenReturn(false);

    SectionService sectionService = mock(SectionService.class);
    when(sectionService.getSection(1)).thenReturn(sectionModerate);
    when(sectionService.getSection(2)).thenReturn(sectionNotModerate);

    permissionService.setSectionService(sectionService);

    // проверка что данные в mock resultSet верные
    assertTrue(resultSetModerateNew.getBoolean("moderate"));
    assertTrue(resultSetModerateOld.getBoolean("moderate"));
    assertFalse(resultSetNotModerateNew.getBoolean("moderate"));
    assertFalse(resultSetNotModerateOld.getBoolean("moderate"));

    assertEquals(0, (new Timestamp(newTime)).compareTo(resultSetModerateNew.getTimestamp("postdate")));
    assertEquals(0, (new Timestamp(oldTime)).compareTo(resultSetModerateOld.getTimestamp("postdate")));
    assertEquals(0, (new Timestamp(newTime)).compareTo(resultSetNotModerateNew.getTimestamp("postdate")));
    assertEquals(0, (new Timestamp(oldTime)).compareTo(resultSetNotModerateOld.getTimestamp("postdate")));


    Topic messageModerateOld = new Topic(resultSetModerateOld);
    Topic messageNotModerateOld = new Topic(resultSetNotModerateOld);
    Topic messageModerateNew = new Topic(resultSetModerateNew);
    Topic messageNotModerateNew = new Topic(resultSetNotModerateNew);

    // проверка что данные в mock message верные
    assertTrue(messageModerateNew.isCommited());
    assertTrue(messageModerateOld.isCommited());
    assertFalse(messageNotModerateNew.isCommited());
    assertFalse(messageNotModerateOld.isCommited());

    assertEquals(0, (new Timestamp(newTime)).compareTo(messageModerateNew.getPostdate()));
    assertEquals(0, (new Timestamp(oldTime)).compareTo(messageModerateOld.getPostdate()));
    assertEquals(0, (new Timestamp(newTime)).compareTo(messageNotModerateNew.getPostdate()));
    assertEquals(0, (new Timestamp(oldTime)).compareTo(messageNotModerateOld.getPostdate()));
   
    // нельзя удалять старые подтвержденные топики в премодерируемом разделе
    assertFalse(permissionService.isDeletable(messageModerateOld, user));
    // можно удалять старые подтвержденные топики в непремодерируемом разделе
//    Assert.assertTrue(permissionService.isDeletableByModerator(messageModerateOld, user));
    // можно удалять старые не подтвержденные топики в премодерируемом разделе
    assertTrue(permissionService.isDeletable(messageNotModerateOld, user));
    // можно удалять старые не подтвержденные топики в непремодерируемом разделе
//    Assert.assertTrue(permissionService.isDeletableByModerator(messageNotModerateOld, user));

    // можно удалять новые подтвержденные топики в премодерируемом разделе
    assertTrue(permissionService.isDeletable(messageModerateNew, user));
    // можно удалять новые подтвержденные топики в непремодерируемом разделе
//    Assert.assertTrue(permissionService.isDeletableByModerator(messageModerateNew, user));
    // можно удалять новые не подтвержденные топики в премодерируемом разделе
    assertTrue(permissionService.isDeletable(messageNotModerateNew, user));
    // можно удалять новые не подтвержденные топики в непремодерируемом разделе
//    Assert.assertTrue(permissionService.isDeletableByModerator(messageNotModerateNew, user));
  }
}
TOP

Related Classes of ru.org.linux.topic.GroupPermissionServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.