1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.exchange.eas;
18
19import android.content.Context;
20import android.os.Bundle;
21import android.telephony.TelephonyManager;
22import android.test.suitebuilder.annotation.SmallTest;
23
24import com.android.emailcommon.provider.EmailContent;
25import com.android.exchange.adapter.Serializer;
26import com.android.exchange.Eas;
27import com.android.exchange.adapter.Tags;
28import com.android.exchange.utility.ExchangeTestCase;
29
30import java.io.IOException;
31import java.util.Arrays;
32
33/**
34 * You can run this entire test case with:
35 *   runtest -c com.android.exchange.eas.EasProvisionTests exchange
36 */
37@SmallTest
38public class EasProvisionTests extends ExchangeTestCase {
39
40    /**
41     * This test case will test PHASE_INITIAL along with a protocol version of Ex2007.
42     */
43    public void testPopulateRequestEntitySerializerPhaseInitialEx2007() throws IOException {
44        // Set up some parameters for the test case
45        final String policyType = "Test_Policy";
46        final String userAgent = "User_Agent";
47        final String status = "Test_Status";
48        final String policyKey = "Test_Policy_Key";
49        final int phase = EasProvision.PHASE_INITIAL;
50        final double protocolVersion = Eas.SUPPORTED_PROTOCOL_EX2007_DOUBLE;
51
52        // Build the result that we are expecting
53        final Serializer expectedResult = new Serializer();
54        expectedResult.start(Tags.PROVISION_PROVISION);
55        expectedResult.start(Tags.PROVISION_POLICIES);
56        expectedResult.start(Tags.PROVISION_POLICY);
57        expectedResult.data(Tags.PROVISION_POLICY_TYPE, policyType);
58        // PROVISION_POLICY, PROVISION_POLICIES, PROVISION_PROVISION
59        expectedResult.end().end().end().done();
60        final byte[] expectedBytes = expectedResult.toByteArray();
61
62        // Now run it through the code that we are testing
63        final Serializer generatedResult = EasProvision.generateRequestEntitySerializer(
64                mContext, userAgent, policyKey, policyType, status, phase, protocolVersion);
65
66        // Now let's analyze the results
67        assertTrue(Arrays.equals(generatedResult.toByteArray(), expectedBytes));
68    }
69
70    /**
71     * This test case will test PHASE_INITIAL along with a protocol version of Ex2010.
72     */
73    public void testPopulateRequestEntitySerializerPhaseInitialEx2010() throws IOException {
74        // Set up some parameters for the test case
75        final String policyType = "Test_Policy";
76        final String userAgent = "User_Agent";
77        final String status = "Test_Status";
78        final String policyKey = "Test_Policy_Key";
79        final int phase = EasProvision.PHASE_INITIAL;
80        final double protocolVersion = Eas.SUPPORTED_PROTOCOL_EX2010_SP1_DOUBLE;
81
82        // Build the result that we are expecting
83        final Serializer expectedResult = new Serializer();
84        expectedResult.start(Tags.PROVISION_PROVISION);
85        EasProvision.expandedAddDeviceInformationToSerializer(expectedResult, mContext, userAgent);
86        expectedResult.start(Tags.PROVISION_POLICIES);
87        expectedResult.start(Tags.PROVISION_POLICY);
88        expectedResult.data(Tags.PROVISION_POLICY_TYPE, policyType);
89        // PROVISION_POLICY, PROVISION_POLICIES, PROVISION_PROVISION
90        expectedResult.end().end().end().done();
91        final byte[] expectedBytes = expectedResult.toByteArray();
92
93        // Now run it through the code that we are testing
94        final Serializer generatedResult = EasProvision.generateRequestEntitySerializer(
95                mContext, userAgent, policyKey, policyType, status, phase, protocolVersion);
96
97        // Now let's analyze the results
98        assertTrue(Arrays.equals(generatedResult.toByteArray(), expectedBytes));
99    }
100
101    /**
102     * This test case will test PHASE_WIPE.
103     */
104    public void testPopulateRequestEntitySerializerPhaseWipe() throws IOException {
105        // Set up some parameters for the test case
106        final String policyType = "Test_Policy";
107        final String userAgent = "User_Agent";
108        final String status = "Test_Status";
109        final String policyKey = "Test_Policy_Key";
110        final int phase = EasProvision.PHASE_WIPE;
111        final double protocolVersion = Eas.SUPPORTED_PROTOCOL_EX2007_DOUBLE;
112
113        // Build the result that we are expecting
114        final Serializer expectedResult = new Serializer();
115        expectedResult.start(Tags.PROVISION_PROVISION);
116        expectedResult.start(Tags.PROVISION_REMOTE_WIPE);
117        expectedResult.data(Tags.PROVISION_STATUS, EasProvision.PROVISION_STATUS_OK);
118        expectedResult.end().end().done(); // PROVISION_REMOTE_WIPE, PROVISION_PROVISION
119        final byte[] expectedBytes = expectedResult.toByteArray();
120
121        // Now run it through the code that we are testing
122        final Serializer generatedResult = EasProvision.generateRequestEntitySerializer(
123                mContext, userAgent, policyKey, policyType, status, phase, protocolVersion);
124
125        // Now let's analyze the results
126        assertTrue(Arrays.equals(generatedResult.toByteArray(), expectedBytes));
127    }
128
129    /**
130     * This test case will test PHASE_ACKNOWLEDGE.
131     */
132    public void testPopulateRequestEntitySerializerPhaseAcknowledge() throws IOException {
133        // Set up some parameters for the test case
134        final String policyType = "Test_Policy";
135        final String userAgent = "User_Agent";
136        final String status = "Test_Status";
137        final String policyKey = "Test_Policy_Key";
138        final int phase = EasProvision.PHASE_ACKNOWLEDGE;
139        final double protocolVersion = Eas.SUPPORTED_PROTOCOL_EX2007_DOUBLE;
140
141        // Build the result that we are expecting
142        final Serializer expectedResult = new Serializer();
143        expectedResult.start(Tags.PROVISION_PROVISION);
144        expectedResult.start(Tags.PROVISION_POLICIES);
145        expectedResult.start(Tags.PROVISION_POLICY);
146        expectedResult.data(Tags.PROVISION_POLICY_TYPE, policyType);
147        expectedResult.data(Tags.PROVISION_POLICY_KEY, policyKey);
148        expectedResult.data(Tags.PROVISION_STATUS, status);
149        // PROVISION_POLICY, PROVISION_POLICIES, PROVISION_PROVISION
150        expectedResult.end().end().end().done();
151        final byte[] expectedBytes = expectedResult.toByteArray();
152
153        // Now run it through the code that we are testing
154        final Serializer generatedResult = EasProvision.generateRequestEntitySerializer(
155                mContext, userAgent, policyKey, policyType, status, phase, protocolVersion);
156
157        // Now let's analyze the results
158        assertTrue(Arrays.equals(generatedResult.toByteArray(), expectedBytes));
159    }
160
161}
162