Package com.adobe.acs.commons.logging.impl

Source Code of com.adobe.acs.commons.logging.impl.JsonEventLoggerTest

/*
* #%L
* ACS AEM Commons Bundle
* %%
* Copyright (C) 2013 - 2014 Adobe
* %%
* 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.
* #L%
*/
package com.adobe.acs.commons.logging.impl;

import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.junit.Test;
import org.osgi.service.event.Event;

import java.util.*;

import static org.junit.Assert.*;

public class JsonEventLoggerTest {

    @Test
    public void testConstructMessage() throws JSONException {
        Map<String, Object> emptyProps = new LinkedHashMap<String, Object>();
        Event empty = new Event("my/empty/topic", mapToDictionary(emptyProps));

        JSONObject jEmptyProps = new JSONObject(JsonEventLogger.constructMessage(empty));
        assertEquals("basic event, empty props", "my/empty/topic", jEmptyProps.getString("event.topics"));

        Map<String, Object> stringProps = new LinkedHashMap<String, Object>();
        stringProps.put("slingevent:application", "376e48ac-b010-4905-8a35-f5413cf6a930");

        Event stringEvent = new Event("my/simple/topic", mapToDictionary(stringProps));
        JSONObject jStringProps = new JSONObject(JsonEventLogger.constructMessage(stringEvent));

        assertEquals("simple event, string props", "376e48ac-b010-4905-8a35-f5413cf6a930", jStringProps.getString("slingevent:application"));

        Map<String, Object> intProps = new LinkedHashMap<String, Object>();
        intProps.put("event.job.retries", -1);
        Event intEvent = new Event("my/simple/topic", mapToDictionary(intProps));
        JSONObject jIntProps = new JSONObject(JsonEventLogger.constructMessage(intEvent));

        assertEquals("simple event, int props", -1, jIntProps.getInt("event.job.retries"));

        Map<String, Object> boolProps = new LinkedHashMap<String, Object>();
        boolProps.put("event.isSimple", true);
        Event boolEvent = new Event("my/simple/topic", mapToDictionary(boolProps));
        JSONObject jBoolProps = new JSONObject(JsonEventLogger.constructMessage(boolEvent));

        assertTrue("simple event, bool props", jBoolProps.getBoolean("event.isSimple"));

        Map<String, Object> stringArrayProps = new LinkedHashMap<String, Object>();
        stringArrayProps.put("resourceChangedAttributes", new String[]{"first", "second"});
        Event stringArrayEvent = new Event("my/simple/topic", mapToDictionary(stringArrayProps));
        JSONObject jStringArray = new JSONObject(JsonEventLogger.constructMessage(stringArrayEvent));

        assertNotNull("complex event, string array not null", jStringArray.optJSONArray("resourceChangedAttributes"));
        assertEquals("complex event, string array props", "first", jStringArray.getJSONArray("resourceChangedAttributes").getString(0));
        assertEquals("complex event, string array props", "second", jStringArray.getJSONArray("resourceChangedAttributes").getString(1));

        Map<String, Object> intArrayProps = new LinkedHashMap<String, Object>();
        intArrayProps.put("numbers", new Integer[]{0, 1, 2});
        Event intArrayEvent = new Event("my/simple/topic", mapToDictionary(intArrayProps));
        JSONObject jIntArray = new JSONObject(JsonEventLogger.constructMessage(intArrayEvent));

        assertNotNull("complex event, int array not null", jIntArray.optJSONArray("numbers"));
        assertEquals("complex event, int array props", 0, jIntArray.getJSONArray("numbers").getInt(0));
        assertEquals("complex event, int array props", 1, jIntArray.getJSONArray("numbers").getInt(1));
        assertEquals("complex event, int array props", 2, jIntArray.getJSONArray("numbers").getInt(2));

        Map<String, Object> mapProps = new LinkedHashMap<String, Object>();
        Map<String, Object> headers = new LinkedHashMap<String, Object>();
        headers.put("user-agent", "curl/7.25.0");
        mapProps.put("headers", headers);
        Event mapEvent = new Event("my/simple/topic", mapToDictionary(mapProps));
        JSONObject jMapProps = new JSONObject(JsonEventLogger.constructMessage(mapEvent));

        assertNotNull("complex event, map not null", jMapProps.optJSONObject("headers"));
        assertEquals("complex event, map value in props", "curl/7.25.0", jMapProps.getJSONObject("headers").getString("user-agent"));

        Map<String, Object> stringSetProps = new LinkedHashMap<String, Object>();
        stringSetProps.put("resourceChangedAttributes", new LinkedHashSet<String>(Arrays.asList("first", "second")));
        Event stringSetEvent = new Event("my/simple/topic", mapToDictionary(stringSetProps));
        JSONObject jStringSet = new JSONObject(JsonEventLogger.constructMessage(stringSetEvent));

        assertNotNull("complex event, string set not null", jStringSet.optJSONArray("resourceChangedAttributes"));
        assertEquals("complex event, string set props", "first", jStringSet.getJSONArray("resourceChangedAttributes").getString(0));
        assertEquals("complex event, string set props", "second", jStringSet.getJSONArray("resourceChangedAttributes").getString(1));

    }

    private static Dictionary<?, ?> mapToDictionary(Map<String, Object> props) {
        return new Hashtable<String, Object>(props);
    }
}
TOP

Related Classes of com.adobe.acs.commons.logging.impl.JsonEventLoggerTest

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.