aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/juick/tests/ApiTests.java
blob: 2bae183d033637a79fde6986e1523a165d28fcea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.juick.tests;

import com.juick.Message;
import com.juick.Tag;
import com.juick.User;
import com.juick.server.MessagesQueries;
import com.juick.server.SubscriptionsQueries;
import com.juick.server.TagQueries;
import com.juick.server.UserQueries;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 * Created by vt on 14.01.2016.
 */
public class ApiTests {
    JdbcTemplate jdbc;
    @Before
    public void setupConnection() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:~/test");
        jdbc = new JdbcTemplate(dataSource);
        jdbc.execute("DROP ALL OBJECTS DELETE FILES");
        jdbc.execute("CREATE TABLE bl_users (user_id int(10) unsigned NOT NULL, " +
                "bl_user_id int(10) unsigned NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP )");
        jdbc.execute("CREATE TABLE messages (" +
                "message_id int(10) unsigned NOT NULL AUTO_INCREMENT," +
                "user_id int(10) unsigned NOT NULL," +
                "place_id int(10) unsigned DEFAULT NULL," +
                "lat decimal(10,7) DEFAULT NULL," +
                "lon decimal(10,7) DEFAULT NULL," +
                "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," +
                "replies smallint(5) unsigned NOT NULL DEFAULT 0," +
                "maxreplyid smallint(5) unsigned NOT NULL DEFAULT 0," +
                "privacy tinyint(4) NOT NULL DEFAULT '1'," +
                "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," +
                "readonly tinyint(1) NOT NULL DEFAULT 0," +
                "likes smallint(6) NOT NULL DEFAULT 0," +
                "hidden tinyint(3) unsigned NOT NULL DEFAULT 0" +
                ")");
        jdbc.execute("CREATE TABLE messages_tags (" +
                "message_id int(10) unsigned NOT NULL," +
                "tag_id int(10) unsigned NOT NULL" +
                ")");
        jdbc.execute("CREATE TABLE users (" +
                "id int(10) unsigned NOT NULL AUTO_INCREMENT," +
                "nick char(64) NOT NULL," +
                "passw char(32) NOT NULL," +
                "banned tinyint(3) unsigned NOT NULL DEFAULT 0)");
        jdbc.execute("CREATE TABLE useroptions (" +
                "user_id int(10) unsigned NOT NULL," +
                "jnotify tinyint(1) NOT NULL DEFAULT 1," +
                "subscr_active tinyint(1) NOT NULL DEFAULT 1)");
        jdbc.execute("CREATE TABLE subscr_users (" +
                "user_id int(10) unsigned NOT NULL," +
                "suser_id int(10) unsigned NOT NULL," +
                "jid char(64) DEFAULT NULL," +
                "active tinyint(1) NOT NULL DEFAULT 1," +
                "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)");
        jdbc.execute("CREATE TABLE subscr_messages (" +
                "message_id int(10) unsigned NOT NULL," +
                "suser_id int(10) unsigned NOT NULL)");
        jdbc.execute("CREATE TABLE messages_txt (" +
                "message_id int(10) unsigned NOT NULL," +
                "tags varchar(255)," +
                "repliesby varchar(96)," +
                "txt TEXT)");
        jdbc.execute("CREATE TABLE tags(" +
                "tag_id int(10) unsigned NOT NULL AUTO_INCREMENT," +
                "synonym_id int(10) unsigned DEFAULT NULL," +
                "name char(48) NOT NULL," +
                "top tinyint(1) unsigned NOT NULL DEFAULT 0," +
                "stat_messages int(10) unsigned NOT NULL DEFAULT 0," +
                "stat_users  smallint(5) unsigned NOT NULL DEFAULT 0)");
        jdbc.execute("CREATE TABLE replies (" +
                "message_id int(10) unsigned NOT NULL," +
                "reply_id smallint(5) unsigned NOT NULL," +
                "user_id int(10) unsigned NOT NULL," +
                "replyto smallint(5) unsigned NOT NULL DEFAULT 0," +
                "ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," +
                "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," +
                "txt text)");
    }

    
    @Test
    public void messageTests() {
        int user_id = UserQueries.createUser(jdbc, "me", "secret");
        User user = UserQueries.getUserByUID(jdbc, user_id).orElse(new User());
        Assert.assertEquals("it should be me", "me", user.getUName());
        int mid = MessagesQueries.createMessage(jdbc, user_id, "yo", null, new ArrayList<>());
        Message msg = MessagesQueries.getMessage(jdbc, mid);
        org.junit.Assert.assertEquals("yo", msg.getText());
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(msg.getDate());
        org.junit.Assert.assertEquals(2016, calendar.get(Calendar.YEAR));
        User me = msg.getUser();
        Assert.assertEquals("me", me.getUName());
        org.junit.Assert.assertEquals("me", MessagesQueries.getMessageAuthor(jdbc, mid).getUName());
        int tagID = TagQueries.createTag(jdbc, "weather");
        Tag tag = TagQueries.getTag(jdbc, tagID);
        List<Tag> tagList = new ArrayList<>();
        tagList.add(tag);
        int mid2 = MessagesQueries.createMessage(jdbc, user_id, "yo2", null, tagList);
        Message msg2 = MessagesQueries.getMessage(jdbc, mid2);
        org.junit.Assert.assertEquals(1, msg2.Tags.size());
        int ugnich_id = UserQueries.createUser(jdbc, "ugnich", "x");
        User ugnich = UserQueries.getUserByUID(jdbc, ugnich_id).orElse(new User());
        int rid = MessagesQueries.createReply(jdbc, msg2.getMID(), 0, ugnich.getUID(), "bla-bla", null);
        org.junit.Assert.assertEquals(1, rid);
        Message msg3 = MessagesQueries.getMessage(jdbc, mid2);
        org.junit.Assert.assertEquals(1, msg3.Replies);
        org.junit.Assert.assertEquals("weather", msg3.Tags.get(0));
        org.junit.Assert.assertEquals(ugnich.getUID(), UserQueries.checkPassword(jdbc, ugnich.getUName(), "x"));
        org.junit.Assert.assertEquals(-1, UserQueries.checkPassword(jdbc, ugnich.getUName(), "xy"));
        SubscriptionsQueries.subscribeMessage(jdbc, msg.getMID(), ugnich.getUID());
        Assert.assertEquals(1, SubscriptionsQueries.getUsersSubscribedToComments(jdbc, msg.getMID(), user.getUID()).size());
    }

}