summaryrefslogtreecommitdiff
path: root/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/PermissionItemTest.java
blob: f99f4872657e4b415ff385adf7950c77de11e08f (plain)
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
package com.smartdevicelink.test.rpc.datatypes;

import com.smartdevicelink.proxy.rpc.HMIPermissions;
import com.smartdevicelink.proxy.rpc.ParameterPermissions;
import com.smartdevicelink.proxy.rpc.PermissionItem;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.Validator;

import junit.framework.TestCase;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.Iterator;

/**
 * This is a unit test class for the SmartDeviceLink library project class : 
 * {@link com.smartdevicelink.rpc.PermissionItem}
 */
public class PermissionItemTest extends TestCase {

	private PermissionItem msg;

	@Override
	public void setUp() {
		msg = new PermissionItem();
		
		msg.setRpcName(Test.GENERAL_STRING);
		msg.setHMIPermissions(Test.GENERAL_HMIPERMISSIONS);
		msg.setParameterPermissions(Test.GENERAL_PARAMETERPERMISSIONS);
		msg.setRequireEncryption(Test.GENERAL_BOOLEAN);
	}

    /**
	 * Tests the expected values of the RPC message.
	 */
    public void testRpcValues () {
    	// Test Values
		String rpcName = msg.getRpcName();
		HMIPermissions hmiPermissions = msg.getHMIPermissions();
		ParameterPermissions parameterPermissions = msg.getParameterPermissions();
		boolean isEncryptionRequired = msg.getRequireEncryption();
		
		// Valid Tests
		assertEquals(Test.MATCH, Test.GENERAL_STRING, rpcName);
    	assertTrue(Test.TRUE, Validator.validateHmiPermissions(Test.GENERAL_HMIPERMISSIONS, hmiPermissions));
    	assertTrue(Test.TRUE, Validator.validateParameterPermissions(Test.GENERAL_PARAMETERPERMISSIONS, parameterPermissions));
    	assertEquals(Test.MATCH, Test.GENERAL_BOOLEAN, isEncryptionRequired);
    	
    	// Invalid/Null Tests
    	PermissionItem msg = new PermissionItem();
		assertNotNull(Test.NOT_NULL, msg);

		assertNull(Test.NULL, msg.getRpcName());
		assertNull(Test.NULL, msg.getHMIPermissions());
		assertNull(Test.NULL, msg.getParameterPermissions());
		assertNull(Test.NULL, msg.getRequireEncryption());
	}

	public void testJson() {
		JSONObject reference = new JSONObject();

		try {
			reference.put(PermissionItem.KEY_RPC_NAME, Test.GENERAL_STRING);
			reference.put(PermissionItem.KEY_HMI_PERMISSIONS, Test.JSON_HMIPERMISSIONS);
			reference.put(PermissionItem.KEY_PARAMETER_PERMISSIONS, Test.JSON_PARAMETERPERMISSIONS);
			reference.put(PermissionItem.KEY_ENCRYPTION_REQUIRE, Test.GENERAL_BOOLEAN);

			JSONObject underTest = msg.serializeJSON();
			assertEquals(Test.MATCH, reference.length(), underTest.length());

			Iterator<?> iterator = reference.keys();
			while (iterator.hasNext()) {
				String key = (String) iterator.next();
				
				if (key.equals(PermissionItem.KEY_HMI_PERMISSIONS)) {
					assertTrue(Test.TRUE, Validator.validateStringList(JsonUtils.readStringListFromJsonObject(reference, key), JsonUtils.readStringListFromJsonObject(underTest, key)));
				} else if (key.equals(PermissionItem.KEY_PARAMETER_PERMISSIONS)) {
					assertTrue(Test.TRUE, Validator.validateStringList(JsonUtils.readStringListFromJsonObject(reference, key), JsonUtils.readStringListFromJsonObject(underTest, key)));
				} else if (key.equals(PermissionItem.KEY_ENCRYPTION_REQUIRE)) {
					assertEquals(Test.MATCH, JsonUtils.readBooleanFromJsonObject(reference, key), JsonUtils.readBooleanFromJsonObject(underTest, key));
				} else {
					assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key));
				}
			}
		} catch (JSONException e) {
			fail(Test.JSON_FAIL);
		}
	}
}