mobile/android/tests/background/junit3/src/db/TestClientsDatabase.java

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 package org.mozilla.gecko.background.db;
     6 import java.util.ArrayList;
     8 import org.json.simple.JSONArray;
     9 import org.mozilla.gecko.sync.Utils;
    10 import org.mozilla.gecko.sync.repositories.NullCursorException;
    11 import org.mozilla.gecko.sync.repositories.android.ClientsDatabase;
    12 import org.mozilla.gecko.sync.repositories.android.RepoUtils;
    13 import org.mozilla.gecko.sync.repositories.domain.ClientRecord;
    14 import org.mozilla.gecko.sync.setup.Constants;
    16 import android.database.Cursor;
    17 import android.test.AndroidTestCase;
    19 public class TestClientsDatabase extends AndroidTestCase {
    21   protected ClientsDatabase db;
    23   public void setUp() {
    24     db = new ClientsDatabase(mContext);
    25     db.wipeDB();
    26   }
    28   public void testStoreAndFetch() {
    29     ClientRecord record = new ClientRecord();
    30     String profileConst = Constants.DEFAULT_PROFILE;
    31     db.store(profileConst, record);
    33     Cursor cur = null;
    34     try {
    35       // Test stored item gets fetched correctly.
    36       cur = db.fetchClientsCursor(record.guid, profileConst);
    37       assertTrue(cur.moveToFirst());
    38       assertEquals(1, cur.getCount());
    40       String guid = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_ACCOUNT_GUID);
    41       String profileId = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_PROFILE);
    42       String clientName = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_NAME);
    43       String clientType = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_TYPE);
    45       assertEquals(record.guid, guid);
    46       assertEquals(profileConst, profileId);
    47       assertEquals(record.name, clientName);
    48       assertEquals(record.type, clientType);
    49     } catch (NullCursorException e) {
    50       fail("Should not have NullCursorException");
    51     } finally {
    52       if (cur != null) {
    53         cur.close();
    54       }
    55     }
    56   }
    58   public void testStoreAndFetchSpecificCommands() {
    59     String accountGUID = Utils.generateGuid();
    60     ArrayList<String> args = new ArrayList<String>();
    61     args.add("URI of Page");
    62     args.add("Sender GUID");
    63     args.add("Title of Page");
    64     String jsonArgs = JSONArray.toJSONString(args);
    66     Cursor cur = null;
    67     try {
    68       db.store(accountGUID, "displayURI", jsonArgs);
    70       // This row should not show up in the fetch.
    71       args.add("Another arg.");
    72       db.store(accountGUID, "displayURI", JSONArray.toJSONString(args));
    74       // Test stored item gets fetched correctly.
    75       cur = db.fetchSpecificCommand(accountGUID, "displayURI", jsonArgs);
    76       assertTrue(cur.moveToFirst());
    77       assertEquals(1, cur.getCount());
    79       String guid = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_ACCOUNT_GUID);
    80       String commandType = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_COMMAND);
    81       String fetchedArgs = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_ARGS);
    83       assertEquals(accountGUID, guid);
    84       assertEquals("displayURI", commandType);
    85       assertEquals(jsonArgs, fetchedArgs);
    86     } catch (NullCursorException e) {
    87       fail("Should not have NullCursorException");
    88     } finally {
    89       if (cur != null) {
    90         cur.close();
    91       }
    92     }
    93   }
    95   public void testFetchCommandsForClient() {
    96     String accountGUID = Utils.generateGuid();
    97     ArrayList<String> args = new ArrayList<String>();
    98     args.add("URI of Page");
    99     args.add("Sender GUID");
   100     args.add("Title of Page");
   101     String jsonArgs = JSONArray.toJSONString(args);
   103     Cursor cur = null;
   104     try {
   105       db.store(accountGUID, "displayURI", jsonArgs);
   107       // This row should ALSO show up in the fetch.
   108       args.add("Another arg.");
   109       db.store(accountGUID, "displayURI", JSONArray.toJSONString(args));
   111       // Test both stored items with the same GUID but different command are fetched.
   112       cur = db.fetchCommandsForClient(accountGUID);
   113       assertTrue(cur.moveToFirst());
   114       assertEquals(2, cur.getCount());
   115     } catch (NullCursorException e) {
   116       fail("Should not have NullCursorException");
   117     } finally {
   118       if (cur != null) {
   119         cur.close();
   120       }
   121     }
   122   }
   124   @SuppressWarnings("resource")
   125   public void testDelete() {
   126     ClientRecord record1 = new ClientRecord();
   127     ClientRecord record2 = new ClientRecord();
   128     String profileConst = Constants.DEFAULT_PROFILE;
   130     db.store(profileConst, record1);
   131     db.store(profileConst, record2);
   133     Cursor cur = null;
   134     try {
   135       // Test record doesn't exist after delete.
   136       db.deleteClient(record1.guid, profileConst);
   137       cur = db.fetchClientsCursor(record1.guid, profileConst);
   138       assertFalse(cur.moveToFirst());
   139       assertEquals(0, cur.getCount());
   141       // Test record2 still there after deleting record1.
   142       cur = db.fetchClientsCursor(record2.guid, profileConst);
   143       assertTrue(cur.moveToFirst());
   144       assertEquals(1, cur.getCount());
   146       String guid = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_ACCOUNT_GUID);
   147       String profileId = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_PROFILE);
   148       String clientName = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_NAME);
   149       String clientType = RepoUtils.getStringFromCursor(cur, ClientsDatabase.COL_TYPE);
   151       assertEquals(record2.guid, guid);
   152       assertEquals(profileConst, profileId);
   153       assertEquals(record2.name, clientName);
   154       assertEquals(record2.type, clientType);
   155     } catch (NullCursorException e) {
   156       fail("Should not have NullCursorException");
   157     } finally {
   158       if (cur != null) {
   159         cur.close();
   160       }
   161     }
   162   }
   164   @SuppressWarnings("resource")
   165   public void testWipe() {
   166     ClientRecord record1 = new ClientRecord();
   167     ClientRecord record2 = new ClientRecord();
   168     String profileConst = Constants.DEFAULT_PROFILE;
   170     db.store(profileConst, record1);
   171     db.store(profileConst, record2);
   174     Cursor cur = null;
   175     try {
   176       // Test before wipe the records are there.
   177       cur = db.fetchClientsCursor(record2.guid, profileConst);
   178       assertTrue(cur.moveToFirst());
   179       assertEquals(1, cur.getCount());
   180       cur = db.fetchClientsCursor(record2.guid, profileConst);
   181       assertTrue(cur.moveToFirst());
   182       assertEquals(1, cur.getCount());
   184       // Test after wipe neither record exists.
   185       db.wipeClientsTable();
   186       cur = db.fetchClientsCursor(record2.guid, profileConst);
   187       assertFalse(cur.moveToFirst());
   188       assertEquals(0, cur.getCount());
   189       cur = db.fetchClientsCursor(record1.guid, profileConst);
   190       assertFalse(cur.moveToFirst());
   191       assertEquals(0, cur.getCount());
   192     } catch (NullCursorException e) {
   193       fail("Should not have NullCursorException");
   194     } finally {
   195       if (cur != null) {
   196         cur.close();
   197       }
   198     }
   199   }
   200 }

mercurial