Package org.slim3.json.test

Source Code of org.slim3.json.test.AppEngineTypeAttrsModelTest

package org.slim3.json.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;

import java.net.URL;

import net.arnx.jsonic.JSON;

import org.junit.Assert;
import org.junit.Test;
import org.slim3.datastore.Datastore;
import org.slim3.tester.TestEnvironment;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.datastore.Blob;
import com.google.appengine.api.datastore.Category;
import com.google.appengine.api.datastore.Email;
import com.google.appengine.api.datastore.GeoPt;
import com.google.appengine.api.datastore.IMHandle;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.datastore.Link;
import com.google.appengine.api.datastore.PhoneNumber;
import com.google.appengine.api.datastore.PostalAddress;
import com.google.appengine.api.datastore.Rating;
import com.google.appengine.api.datastore.ShortBlob;
import com.google.appengine.api.datastore.Text;
import com.google.appengine.api.users.User;
import com.google.apphosting.api.ApiProxy;

public class AppEngineTypeAttrsModelTest {
    @Test
    public void modelToJson() throws Exception {
        Datastore.setGlobalCipherKey("0654813216578941");
        ApiProxy.setEnvironmentForCurrentThread(new TestEnvironment() {
            @Override
            public String getAppId() {
                return "slim3-gen";
            }
        });
        AppEngineTypeAttrsModel m = new AppEngineTypeAttrsModel();
        m.setKey(KeyFactory.createKey("test", 1000));
        m.setBlobKeyAttr(new BlobKey("Q3PqkweYlb4iWpp0BVw"));
        m.setCategoryAttr(new Category("partOfSpeech"));
        m.setEmailAttr(new Email("takawitter@test.com"));
        m.setBlobAttr(new Blob("hello".getBytes()));
        m.setGeoPtAttr(new GeoPt(10, 10));
        m.setImHandleAttr1(new IMHandle(IMHandle.Scheme.xmpp, "handle"));
        m.setImHandleAttr2(new IMHandle(new URL("http://aim.com"), "network"));
        m.setLinkAttr(new Link("link"));
        m.setPhoneNumberAttr(new PhoneNumber("000-0000-0000"));
        m.setPostalAddressAttr(new PostalAddress("address"));
        m.setRatingAttr(new Rating(70));
        m.setShortBlobAttr(new ShortBlob("hello".getBytes()));
        m.setTextAttr(new Text("hello"));
        m.setEncryptedTextAttr(new Text("hello"));
        m.setUser1(new User("user@test.com", "authDomain"));
        m.setUser2(new User("user@test.com", "authDomain", "userId"));
        m.setUser3(new User(
            "user@test.com",
            "authDomain",
            "userId",
            "federatedId"));

        String json = AppEngineTypeAttrsModelMeta.get().modelToJson(m);
        System.out.println(json);
        JSON j = new JSON();
        j.setSuppressNull(true);
        System.out.println(j.format(m));

        assertEquals(
            "{"
                + "\"blobAttr\":\"aGVsbG8=\""
                + ",\"blobKeyAttr\":\"Q3PqkweYlb4iWpp0BVw\",\"categoryAttr\":\"partOfSpeech\""
                + ",\"emailAttr\":\"takawitter@test.com\""
                + ",\"encryptedTextAttr\":\"eeRXmeJQOo8HbwTHJ+R+WQ==\""
                + ",\"geoPtAttr\":{\"latitude\":10.0,\"longitude\":10.0}"
                + ",\"imHandleAttr1\":{\"address\":\"handle\",\"protocol\":\"xmpp\"}"
                + ",\"imHandleAttr2\":{\"address\":\"network\",\"protocol\":\"http://aim.com\"}"
                + ",\"key\":\"aglzbGltMy1nZW5yCwsSBHRlc3QY6AcM\""
                + ",\"linkAttr\":\"link\",\"phoneNumberAttr\":\"000-0000-0000\""
                + ",\"postalAddressAttr\":\"address\",\"ratingAttr\":70"
                + ",\"shortBlobAttr\":\"aGVsbG8=\""
                + ",\"textAttr\":\"hello\""
                + ",\"user1\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\"}"
                + ",\"user2\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\",\"userId\":\"userId\"}"
                + ",\"user3\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\",\"federatedIdentity\":\"federatedId\",\"userId\":\"userId\"}"
                + "}",
            json);
    }

    @Test
    public void modelToJson_null() {
        AppEngineTypeAttrsModel m = new AppEngineTypeAttrsModel();
        String json = AppEngineTypeAttrsModelMeta.get().modelToJson(m);
        assertEquals("{}", json);
    }

    @Test
    public void modelToJson_nullBlob() {
        AppEngineTypeAttrsModel m = new AppEngineTypeAttrsModel();
        m.setBlobAttr(new Blob(null));
        String json = AppEngineTypeAttrsModelMeta.get().modelToJson(m);
        assertEquals("{}", json);
    }

    @Test
    public void modelToJson_nullText() {
        AppEngineTypeAttrsModel m = new AppEngineTypeAttrsModel();
        m.setTextAttr(new Text(null));
        String json = AppEngineTypeAttrsModelMeta.get().modelToJson(m);
        assertEquals("{}", json);
    }

    @Test
    public void jsonToModel() {
        Datastore.setGlobalCipherKey("0654813216578941");
        AppEngineTypeAttrsModel m =
            AppEngineTypeAttrsModelMeta
                .get()
                .jsonToModel(
                    "{"
                        + "\"blobAttr\":\"aGVsbG8=\""
                        + ",\"blobKeyAttr\":\"Q3PqkweYlb4iWpp0BVw\",\"categoryAttr\":\"partOfSpeech\""
                        + ",\"emailAttr\":\"takawitter@test.com\""
                        + ",\"encryptedTextAttr\":\"eeRXmeJQOo8HbwTHJ+R+WQ==\""
                        + ",\"geoPtAttr\":{\"latitude\":10.0,\"longitude\":10.0}"
                        + ",\"imHandleAttr1\":{\"address\":\"handle\",\"protocol\":\"xmpp\"}"
                        + ",\"imHandleAttr2\":{\"address\":\"network\",\"protocol\":\"http://aim.com\"}"
                        + ",\"key\":\"aglzbGltMy1nZW5yCwsSBHRlc3QY6AcM\""
                        + ",\"linkAttr\":\"link\",\"phoneNumberAttr\":\"000-0000-0000\""
                        + ",\"postalAddressAttr\":\"address\",\"ratingAttr\":70"
                        + ",\"shortBlobAttr\":\"aGVsbG8=\""
                        + ",\"textAttr\":\"hello\""
                        + ",\"user1\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\"}"
                        + ",\"user2\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\",\"userId\":\"userId\"}"
                        + ",\"user3\":{\"authDomain\":\"authDomain\",\"email\":\"user@test.com\",\"federatedIdentity\":\"federatedId\",\"userId\":\"userId\"}"
                        + "}");
        Assert.assertEquals(
            "aglzbGltMy1nZW5yCwsSBHRlc3QY6AcM",
            KeyFactory.keyToString(m.getKey()));
        Assert.assertEquals("Q3PqkweYlb4iWpp0BVw", m
            .getBlobKeyAttr()
            .getKeyString());
        Assert.assertEquals("partOfSpeech", m.getCategoryAttr().getCategory());
        Assert.assertEquals("takawitter@test.com", m.getEmailAttr().getEmail());
        Assert
            .assertArrayEquals("hello".getBytes(), m.getBlobAttr().getBytes());
        Assert.assertEquals(10, m.getGeoPtAttr().getLatitude(), 0.1);
        Assert.assertEquals(10, m.getGeoPtAttr().getLongitude(), 0.1);
        Assert.assertEquals("handle", m.getImHandleAttr1().getAddress());
        Assert.assertEquals(IMHandle.Scheme.xmpp.name(), m
            .getImHandleAttr1()
            .getProtocol());
        Assert.assertEquals("network", m.getImHandleAttr2().getAddress());
        Assert.assertEquals("http://aim.com", m
            .getImHandleAttr2()
            .getProtocol());
        Assert.assertEquals("link", m.getLinkAttr().getValue());
        Assert
            .assertEquals("000-0000-0000", m.getPhoneNumberAttr().getNumber());
        Assert.assertEquals("address", m.getPostalAddressAttr().getAddress());
        Assert.assertEquals(70, m.getRatingAttr().getRating());
        Assert.assertArrayEquals("hello".getBytes(), m
            .getShortBlobAttr()
            .getBytes());
        Assert.assertEquals("hello", m.getTextAttr().getValue());
        Assert.assertEquals("hello", m.getEncryptedTextAttr().getValue());
        Assert.assertEquals("authDomain", m.getUser1().getAuthDomain());
        Assert.assertEquals("user@test.com", m.getUser1().getEmail());
        Assert.assertNull(m.getUser1().getUserId());
        Assert.assertNull(m.getUser1().getFederatedIdentity());
        Assert.assertEquals("authDomain", m.getUser2().getAuthDomain());
        Assert.assertEquals("user@test.com", m.getUser2().getEmail());
        Assert.assertEquals("userId", m.getUser2().getUserId());
        Assert.assertNull(m.getUser2().getFederatedIdentity());
        Assert.assertEquals("authDomain", m.getUser3().getAuthDomain());
        Assert.assertEquals("user@test.com", m.getUser3().getEmail());
        Assert.assertEquals("userId", m.getUser3().getUserId());
        Assert.assertEquals("federatedId", m.getUser3().getFederatedIdentity());
    }

    @Test
    public void nullCheck() {
        assertNull(new Blob(null).getBytes());
        try {
            new BlobKey(null);
            fail();
        } catch (IllegalArgumentException e) {
        }
        try {
            new Category(null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new Email(null);
            fail();
        } catch (NullPointerException e) {
        }
        // GeoPt
        try {
            new IMHandle((URL) null, null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new IMHandle((IMHandle.Scheme) null, null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new PhoneNumber(null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new PostalAddress(null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new ShortBlob(null);
            fail();
        } catch (NullPointerException e) {
        }
        Assert.assertNull(new Text(null).getValue());
        try {
            new User(null, null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new User(null, null, null);
            fail();
        } catch (NullPointerException e) {
        }
        try {
            new User(null, null, null, null);
            fail();
        } catch (NullPointerException e) {
        }
    }

    @Test
    public void imHandle() throws Exception {
        IMHandle h1 = new IMHandle(IMHandle.Scheme.xmpp, "handle");
        IMHandle h2 = new IMHandle(new URL("http://aim.com"), "network");
        IMHandle[] hs = { h1, h2 };
        for (IMHandle h : hs) {
            Assert.assertNotNull(h.getProtocol());
            Assert.assertNotNull(h.getAddress());
            System.out.println("{\"protocol\":\""
                + h.getProtocol()
                + "\",\"address\":\""
                + h.getAddress()
                + "\"}");
        }
    }

    @Test
    public void keyTest() {
        Key key = KeyFactory.stringToKey("aglzbGltMy1nZW5yCwsSBHRlc3QY6AcM");
        Assert.assertEquals("test", key.getKind());
        Assert.assertEquals(1000, key.getId());
    }
}
TOP

Related Classes of org.slim3.json.test.AppEngineTypeAttrsModelTest

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.