/*
* Copyright 2014 Phil Bayfield
*
* 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 me.philio.disqus.api.resources;
import android.test.suitebuilder.annotation.LargeTest;
import java.util.List;
import me.philio.disqus.api.exception.ApiException;
import me.philio.disqus.api.model.Response;
import me.philio.disqus.api.model.blacklists.Entry;
import me.philio.disqus.api.model.users.User;
import static me.philio.disqus.api.model.blacklists.Entry.Type;
public class BlacklistsTest extends ResourceTestCase {
/**
* Blacklists resource
*/
private Blacklists mBlacklists;
@Override
protected void setUp() throws Exception {
super.setUp();
mBlacklists = mApiClient.createBlacklists();
// Clean up any existing blacklist records
cleanUp();
}
@Override
protected void tearDown() throws Exception {
// Clean up any existing blacklist records
cleanUp();
}
private void cleanUp() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.list("disqusforandroidintegrationtesting");
if (entries != null && entries.data != null && entries.data.size() > 0) {
for (Entry entry : entries.data) {
switch (entry.type) {
case domain:
mBlacklists.removeDomains("disqusforandroidintegrationtesting",
new String[]{entry.value.toString()});
break;
case email:
mBlacklists.removeEmails("disqusforandroidintegrationtesting",
new String[]{entry.value.toString()});
break;
case ip:
mBlacklists.removeIps("disqusforandroidintegrationtesting",
new String[]{entry.value.toString()});
break;
case user:
mBlacklists.removeUsers("disqusforandroidintegrationtesting",
new Long[]{((User) entry.value).id});
break;
case word:
mBlacklists.removeWords("disqusforandroidintegrationtesting",
new String[]{entry.value.toString()});
break;
}
}
}
}
/**
* Test adding domains to the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testAddDomains() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.addDomains("disqusforandroidintegrationtesting",
new String[]{"test.com", "test2.com", "test3.com"}, 0,
"Added by Disqus for Android");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.domain, entries.data.get(0).type);
assertEquals("test.com", entries.data.get(0).value);
assertEquals(Type.domain, entries.data.get(1).type);
assertEquals("test2.com", entries.data.get(1).value);
assertEquals(Type.domain, entries.data.get(2).type);
assertEquals("test3.com", entries.data.get(2).value);
}
/**
* Test adding words to the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testAddWords() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.addWords("disqusforandroidintegrationtesting",
new String[]{"naughty", "words"}, 0, "Added by Disqus for Android");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(2, entries.data.size());
assertEquals(Type.word, entries.data.get(0).type);
assertEquals("naughty", entries.data.get(0).value);
assertEquals(Type.word, entries.data.get(1).type);
assertEquals("words", entries.data.get(1).value);
}
/**
* Test adding IPs to the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testAddIps() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.addIps("disqusforandroidintegrationtesting",
new String[]{"10.0.0.1", "10.0.0.2"}, 0, "Added by Disqus for Android");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(2, entries.data.size());
assertEquals(Type.ip, entries.data.get(0).type);
assertEquals("10.0.0.1", entries.data.get(0).value);
assertEquals(Type.ip, entries.data.get(1).type);
assertEquals("10.0.0.2", entries.data.get(1).value);
}
/**
* Test adding users to the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testAddUsers() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.addUsers("disqusforandroidintegrationtesting",
new Long[]{1l, 2l, 3l}, 0, "Added by Disqus for Android");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.user, entries.data.get(0).type);
assertEquals(1, ((User) entries.data.get(0).value).id);
assertEquals(Type.user, entries.data.get(1).type);
assertEquals(2, ((User) entries.data.get(1).value).id);
assertEquals(Type.user, entries.data.get(2).type);
assertEquals(3, ((User) entries.data.get(2).value).id);
}
/**
* Test adding emails to the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testAddEmails() throws ApiException {
Response<List<Entry>> entries =
mBlacklists.addEmails("disqusforandroidintegrationtesting",
new String[]{"mail@test.com", "mail@test2.com", "mail@test3.com"}, 0,
"Added by Disqus for Android");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.email, entries.data.get(0).type);
assertEquals("mail@test.com", entries.data.get(0).value);
assertEquals(Type.email, entries.data.get(1).type);
assertEquals("mail@test2.com", entries.data.get(1).value);
assertEquals(Type.email, entries.data.get(2).type);
assertEquals("mail@test3.com", entries.data.get(2).value);
}
/**
* Test listing blacklisted items
*
* @throws ApiException
*/
@LargeTest
public void testList() throws ApiException {
mBlacklists.addWords("disqusforandroidintegrationtesting",
new String[]{"some", "naughty", "words"}, 0, "Added by Disqus for Android");
mBlacklists.addIps("disqusforandroidintegrationtesting", new String[]{"10.0.0.1"}, 0,
"Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.list("disqusforandroidintegrationtesting");
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(4, entries.data.size());
assertEquals(Type.word, entries.data.get(0).type);
assertEquals("some", entries.data.get(0).value);
assertEquals(Type.word, entries.data.get(1).type);
assertEquals("naughty", entries.data.get(1).value);
assertEquals(Type.word, entries.data.get(2).type);
assertEquals("words", entries.data.get(2).value);
assertEquals(Type.ip, entries.data.get(3).type);
assertEquals("10.0.0.1", entries.data.get(3).value);
}
/**
* Test removing domains from the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testRemoveDomains() throws ApiException {
mBlacklists.addDomains("disqusforandroidintegrationtesting",
new String[]{"test.com", "test2.com", "test3.com"}, 0,
"Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.removeDomains("disqusforandroidintegrationtesting",
new String[]{"test.com", "test2.com", "test3.com"});
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.domain, entries.data.get(0).type);
assertEquals("test.com", entries.data.get(0).value);
assertEquals(Type.domain, entries.data.get(1).type);
assertEquals("test2.com", entries.data.get(1).value);
assertEquals(Type.domain, entries.data.get(2).type);
assertEquals("test3.com", entries.data.get(2).value);
}
/**
* Test removing words from the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testRemoveWords() throws ApiException {
mBlacklists.addWords("disqusforandroidintegrationtesting", new String[]{"naughty", "words"},
0, "Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.removeWords("disqusforandroidintegrationtesting",
new String[]{"naughty", "words"});
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(2, entries.data.size());
assertEquals(Type.word, entries.data.get(0).type);
assertEquals("naughty", entries.data.get(0).value);
assertEquals(Type.word, entries.data.get(1).type);
assertEquals("words", entries.data.get(1).value);
}
/**
* Test removing ips from the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testRemoveIps() throws ApiException {
mBlacklists.addIps("disqusforandroidintegrationtesting",
new String[]{"10.0.0.1", "10.0.0.2"}, 0, "Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.removeIps("disqusforandroidintegrationtesting",
new String[]{"10.0.0.1", "10.0.0.2"});
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(2, entries.data.size());
assertEquals(Type.ip, entries.data.get(0).type);
assertEquals("10.0.0.1", entries.data.get(0).value);
assertEquals(Type.ip, entries.data.get(1).type);
assertEquals("10.0.0.2", entries.data.get(1).value);
}
/**
* Test removing users from the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testRemoveUsers() throws ApiException {
mBlacklists.addUsers("disqusforandroidintegrationtesting", new Long[]{1l, 2l, 3l}, 0,
"Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.removeUsers("disqusforandroidintegrationtesting",
new Long[]{1l, 2l, 3l});
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.user, entries.data.get(0).type);
assertEquals(1, ((User) entries.data.get(0).value).id);
assertEquals(Type.user, entries.data.get(1).type);
assertEquals(2, ((User) entries.data.get(1).value).id);
assertEquals(Type.user, entries.data.get(2).type);
assertEquals(3, ((User) entries.data.get(2).value).id);
}
/**
* Test removing emails from the blacklist
*
* @throws ApiException
*/
@LargeTest
public void testRemoveEmails() throws ApiException {
mBlacklists.addEmails("disqusforandroidintegrationtesting",
new String[]{"mail@test.com", "mail@test2.com", "mail@test3.com"}, 0,
"Added by Disqus for Android");
Response<List<Entry>> entries =
mBlacklists.removeEmails("disqusforandroidintegrationtesting",
new String[]{"mail@test.com", "mail@test2.com", "mail@test3.com"});
assertNotNull(entries);
assertEquals(0, entries.code);
assertNotNull(entries.data);
assertEquals(3, entries.data.size());
assertEquals(Type.email, entries.data.get(0).type);
assertEquals("mail@test.com", entries.data.get(0).value);
assertEquals(Type.email, entries.data.get(1).type);
assertEquals("mail@test2.com", entries.data.get(1).value);
assertEquals(Type.email, entries.data.get(2).type);
assertEquals("mail@test3.com", entries.data.get(2).value);
}
}