package com.urbanairship.api.channel;
import com.google.common.collect.ImmutableSet;
import com.urbanairship.api.channel.model.ChannelResponse;
import com.urbanairship.api.channel.model.ChannelType;
import com.urbanairship.api.channel.model.ChannelView;
import com.urbanairship.api.channel.parse.ChannelObjectMapper;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class ChannelResponseTest {
ObjectMapper MAPPER = ChannelObjectMapper.getInstance();
@Test
public void testAPIListAllChannelsResponse() {
String sixresponse = "{\n" +
" \"ok\": true,\n" +
" \"channels\": [\n" +
" {\n" +
" \"channel_id\": \"00000000-0000-0000-0000-000000000000\",\n" +
" \"device_type\": \"android\",\n" +
" \"installed\": false,\n" +
" \"opt_in\": false,\n" +
" \"push_address\": null,\n" +
" \"created\": \"2012-06-05T20:37:37\",\n" +
" \"last_registration\": null,\n" +
" \"alias\": null,\n" +
" \"tags\": [\n" +
" \"test01\"\n" +
" ],\n" +
" \"tag_groups\": {\n" +
" \"testGroup01\" : [\n" +
" \"testGroup01Tag01\"\n" +
" ]\n" +
" }\n" +
" },\n" +
" {\n" +
" \"channel_id\": \"00662346-9e39-4f5f-80e7-3f8fae58863c\",\n" +
" \"device_type\": \"android\",\n" +
" \"installed\": true,\n" +
" \"opt_in\": true,\n" +
" \"background\": true,\n" +
" \"push_address\": \"APA91bFPOUF6KNHXjoG0vaQSP4VLXirGDpy0_CRcb6Jhvnrya2bdRmlUoMiJ12JJevjONZzUwFETYa8uzyiE_9WaL3mzZrdjqOv2YuzYlQ_TrXVgo61JmIyw-M_pshIjVvkvtOuZ4MnRJJ_MiQDYwpB4ZhOTMlyqRw\",\n" +
" \"created\": \"2014-03-06T18:52:59\",\n" +
" \"last_registration\": \"2014-10-07T21:28:35\",\n" +
" \"alias\": \"aaron-device\",\n" +
" \"tags\": [\n" +
" \"aaron-tag\",\n" +
" \"rhtgeg\",\n" +
" \"tnrvrg\"\n" +
" ],\n" +
" \"tag_groups\": {\n" +
" \"testGroup02\" : [\n" +
" \"testGroup02Tag01\",\n" +
" \"testGroup02Tag02\"\n" +
" ]\n" +
" }\n" +
" },\n" +
" {\n" +
" \"channel_id\": \"00d174cd-0a31-427e-95c9-52d5785bcd50\",\n" +
" \"device_type\": \"ios\",\n" +
" \"installed\": true,\n" +
" \"opt_in\": true,\n" +
" \"background\": true,\n" +
" \"push_address\": \"E4EA0D96092A9213BB186BEF66E83EE226401F82B3A77A1AC8217A8FE8ED4614\",\n" +
" \"created\": \"2014-07-09T18:08:37\",\n" +
" \"last_registration\": \"2014-10-02T01:41:42\",\n" +
" \"alias\": null,\n" +
" \"tags\": [\n" +
" \"version_1.5.0\"\n" +
" ],\n" +
" \"tag_groups\": {},\n" +
" \"ios\": {\n" +
" \"badge\": 1,\n" +
" \"quiettime\": {\n" +
" \"start\": \"17:00\",\n" +
" \"end\": \"9:00\"\n" +
" },\n" +
" \"tz\": \"America\\/Los_Angeles\"\n" +
" }\n" +
" },\n" +
" {\n" +
" \"channel_id\": \"00d8cb94-eac9-49fb-bad0-29298a06730e\",\n" +
" \"device_type\": \"ios\",\n" +
" \"installed\": false,\n" +
" \"opt_in\": false,\n" +
" \"push_address\": \"21F34C9ED37EAF8D7DC43561C07AA398CA5C6F503196C9E8230C50C0959B8653\",\n" +
" \"created\": \"2014-02-22T22:48:37\",\n" +
" \"last_registration\": null,\n" +
" \"alias\": \"iPhone 7,1\",\n" +
" \"tags\": [\n" +
" \"kablam\",\n" +
" \"version_1.3\"\n" +
" ],\n" +
" \"tag_groups\": {\n" +
" \"testGroup03\": [\n" +
" \"testGroup03Tag01\",\n" +
" \"testGroup03Tag02\",\n" +
" \"testGroup03Tag03\"\n" +
" ],\n" +
" \"testGroup04\": [\n" +
" \"testGroup04Tag01\"\n" +
" ]\n" +
" },\n" +
" \"ios\": {\n" +
" \"badge\": 1,\n" +
" \"quiettime\": {\n" +
" \"start\": null,\n" +
" \"end\": null\n" +
" },\n" +
" \"tz\": null\n" +
" }\n" +
" },\n" +
" {\n" +
" \"channel_id\": \"01257ecd-8182-41fe-a741-9fed91b993cb\",\n" +
" \"device_type\": \"android\",\n" +
" \"installed\": false,\n" +
" \"opt_in\": false,\n" +
" \"push_address\": null,\n" +
" \"created\": \"2013-01-25T00:55:05\",\n" +
" \"last_registration\": null,\n" +
" \"alias\": null,\n" +
" \"tags\": [\n" +
" \n" +
" ],\n" +
" \"tag_groups\": {}\n" +
" },\n" +
" {\n" +
" \"channel_id\": \"f82d3723-09d0-4390-b0ff-690485685e3e\",\n" +
" \"device_type\": \"web\",\n" +
" \"installed\": true,\n" +
" \"push_address\": \"webpushaddress\",\n" +
" \"named_user_id\": null,\n" +
" \"alias\": null,\n" +
" \"tags\": [\n" +
" \"test1\"\n" +
" ],\n" +
" \"tag_groups\": {\n" +
" \"ua_channel_type\": [\n" +
" \"web\"\n" +
" ],\n" +
" \"ua_web_sdk_version\": [\n" +
" \"0.0.1\"\n" +
" ],\n" +
" \"ua_browser_name\": [\n" +
" \"chrome\"\n" +
" ],\n" +
" \"ua_browser_type\": [\n" +
" \"desktop\"\n" +
" ],\n" +
" \"ua_browser_version\": [\n" +
" \"chrome-56\"\n" +
" ],\n" +
" \"timezone\": [\n" +
" \"America/Los_Angeles\"\n" +
" ],\n" +
" \"ua_locale_country\": [\n" +
" \"US\"\n" +
" ],\n" +
" \"ua_locale_language\": [\n" +
" \"en\"\n" +
" ],\n" +
" \"ua_opt_in\": [\n" +
" \"true\"\n" +
" ]\n" +
" },\n" +
" \"created\": \"2013-01-25T00:55:05\",\n" +
" \"opt_in\": true,\n" +
" \"web\": {\n" +
" \"subscription\": {\n" +
" \"p256dh\": \"p256dhvalue\",\n" +
" \"auth\": \"authvalue\"\n" +
" }\n" +
" },\n" +
" \"last_registration\": \"2017-03-09T16:27:20\"\n" +
" }" +
" ],\n" +
" \"next_page\": \"https:\\/\\/go.urbanairship.com\\/api\\/channels?limit=5&start=0143e4d6-724c-4fc8-bbc6-ca647b8993bf\"\n" +
"}";
try {
ChannelResponse response = MAPPER.readValue(sixresponse, ChannelResponse.class);
assertTrue(response.getOk());
assertEquals("https://go.urbanairship.com/api/channels?limit=5&start=0143e4d6-724c-4fc8-bbc6-ca647b8993bf", response.getNextPage().get());
assertEquals(6, response.getChannelObjects().get().size());
ChannelView one = response.getChannelObjects().get().get(0);
assertNotNull(one);
assertFalse(one.getAlias().isPresent());
assertFalse(one.getBackground().isPresent());
assertEquals("00000000-0000-0000-0000-000000000000", one.getChannelId());
assertEquals(1338928657000L, one.getCreated().getMillis());
assertEquals(ChannelType.ANDROID, one.getChannelType());
assertFalse(one.getIosSettings().isPresent());
assertFalse(one.getLastRegistration().isPresent());
assertFalse(one.getPushAddress().isPresent());
assertEquals("[test01]", one.getTags().toString());
assertTrue(one.getTagGroups().containsKey("testGroup01"));
assertEquals("[testGroup01Tag01]", one.getTagGroups().get("testGroup01").toString());
assertFalse(one.isInstalled());
assertFalse(one.isOptIn());
ChannelView two = response.getChannelObjects().get().get(1);
assertNotNull(two);
assertEquals("aaron-device", two.getAlias().get());
assertTrue(two.getBackground().get());
assertEquals("00662346-9e39-4f5f-80e7-3f8fae58863c", two.getChannelId());
assertEquals(1394131979000L, two.getCreated().getMillis());
assertEquals(ChannelType.ANDROID, two.getChannelType());
assertFalse(two.getIosSettings().isPresent());
assertEquals(1412717315000L, two.getLastRegistration().get().getMillis());
assertEquals("APA91bFPOUF6KNHXjoG0vaQSP4VLXirGDpy0_CRcb6Jhvnrya2bdRmlUoMiJ12JJevjONZzUwFETYa8uzyiE_9WaL3mzZrdjqOv2YuzYlQ_TrXVgo61JmIyw-M_pshIjVvkvtOuZ4MnRJJ_MiQDYwpB4ZhOTMlyqRw", two.getPushAddress().get());
assertEquals("[aaron-tag, rhtgeg, tnrvrg]", two.getTags().toString());
assertTrue(two.getTagGroups().containsKey("testGroup02"));
assertEquals("[testGroup02Tag02, testGroup02Tag01]", two.getTagGroups().get("testGroup02").toString());
assertTrue(two.isInstalled());
assertTrue(two.isOptIn());
ChannelView three = response.getChannelObjects().get().get(2);
assertNotNull(three);
assertFalse(three.getAlias().isPresent());
assertTrue(three.getBackground().get());
assertEquals("00d174cd-0a31-427e-95c9-52d5785bcd50", three.getChannelId());
assertEquals(1404929317000L, three.getCreated().getMillis());
assertEquals(ChannelType.IOS, three.getChannelType());
assertEquals("IosSettings{badge=1, quiettime=Optional.of(QuietTime{start='17:00', end='9:00'}), timezone=Optional.of(America/Los_Angeles)}", three.getIosSettings().get().toString());
assertEquals(1412214102000L, three.getLastRegistration().get().getMillis());
assertEquals("E4EA0D96092A9213BB186BEF66E83EE226401F82B3A77A1AC8217A8FE8ED4614", three.getPushAddress().get());
assertEquals("[version_1.5.0]", three.getTags().toString());
assertTrue(three.getTagGroups().isEmpty());
assertTrue(three.isInstalled());
assertTrue(three.isOptIn());
ChannelView four = response.getChannelObjects().get().get(3);
assertNotNull(four);
assertEquals("iPhone 7,1", four.getAlias().get());
assertFalse(four.getBackground().isPresent());
assertEquals("00d8cb94-eac9-49fb-bad0-29298a06730e", four.getChannelId());
assertEquals(1393109317000L, four.getCreated().getMillis());
assertEquals(ChannelType.IOS, four.getChannelType());
assertEquals("IosSettings{badge=1, quiettime=Optional.of(QuietTime{start='null', end='null'}), timezone=Optional.absent()}", four.getIosSettings().get().toString());
assertFalse(four.getLastRegistration().isPresent());
assertEquals("21F34C9ED37EAF8D7DC43561C07AA398CA5C6F503196C9E8230C50C0959B8653", four.getPushAddress().get());
assertEquals("[kablam, version_1.3]", four.getTags().toString());
assertTrue(four.getTagGroups().containsKey("testGroup03"));
ImmutableSet<String> expectedTags = ImmutableSet.of("testGroup03Tag01", "testGroup03Tag03", "testGroup03Tag02");
assertEquals(expectedTags, four.getTagGroups().get("testGroup03"));
assertTrue(four.getTagGroups().containsKey("testGroup04"));
assertEquals("[testGroup04Tag01]", four.getTagGroups().get("testGroup04").toString());
assertFalse(four.isInstalled());
assertFalse(four.isOptIn());
ChannelView five = response.getChannelObjects().get().get(4);
assertNotNull(five);
assertFalse(five.getAlias().isPresent());
assertFalse(five.getBackground().isPresent());
assertEquals("01257ecd-8182-41fe-a741-9fed91b993cb", five.getChannelId());
assertEquals(1359075305000L, five.getCreated().getMillis());
assertEquals(ChannelType.ANDROID, five.getChannelType());
assertFalse(five.getIosSettings().isPresent());
assertFalse(five.getLastRegistration().isPresent());
assertFalse(five.getPushAddress().isPresent());
assertEquals("[]", five.getTags().toString());
assertTrue(five.getTagGroups().isEmpty());
assertFalse(five.isInstalled());
assertFalse(five.isOptIn());
ChannelView six = response.getChannelObjects().get().get(5);
assertNotNull(six);
assertFalse(six.getAlias().isPresent());
assertFalse(six.getBackground().isPresent());
assertEquals("f82d3723-09d0-4390-b0ff-690485685e3e", six.getChannelId());
assertEquals(1359075305000L, six.getCreated().getMillis());
assertEquals(ChannelType.WEB, six.getChannelType());
assertFalse(six.getIosSettings().isPresent());
assertTrue(six.getLastRegistration().isPresent());
assertTrue(six.getPushAddress().isPresent());
assertTrue(six.isInstalled());
assertTrue(six.isOptIn());
assertTrue(six.getTags().contains("test1"));
} catch (Exception ex) {
ex.printStackTrace();
fail("Exception " + ex.getMessage());
}
}
}