mirror of
https://github.com/etesync/android
synced 2024-11-16 04:49:06 +00:00
Tests: Add some basic tests.
This commit is contained in:
parent
dd425ecbe2
commit
2e7ac65883
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright © 2013 – 2015 Ricki Hirner (bitfire web engineering).
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Public License v3.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
package com.etesync.syncadapter.journalmanager;
|
||||
|
||||
import com.etesync.syncadapter.App;
|
||||
import com.etesync.syncadapter.HttpClient;
|
||||
import com.etesync.syncadapter.model.CollectionInfo;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
import okio.BufferedSink;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class ServiceTest {
|
||||
private OkHttpClient httpClient;
|
||||
private HttpUrl remote;
|
||||
private String authToken;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
httpClient = HttpClient.create(null);
|
||||
remote = HttpUrl.parse("http://localhost:8000"); // FIXME: hardcode for now, should make configureable
|
||||
JournalAuthenticator journalAuthenticator = new JournalAuthenticator(httpClient, remote);
|
||||
authToken = journalAuthenticator.getAuthToken(Helpers.USER, Helpers.PASSWORD);
|
||||
|
||||
httpClient = HttpClient.create(null, App.log, null, authToken);
|
||||
|
||||
/* Reset */
|
||||
Request request = new Request.Builder()
|
||||
.post(new RequestBody() {
|
||||
@Override
|
||||
public MediaType contentType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeTo(BufferedSink sink) throws IOException {
|
||||
|
||||
}
|
||||
})
|
||||
.url(remote.newBuilder().addEncodedPathSegments("reset/").build())
|
||||
.build();
|
||||
Response response = httpClient.newCall(request).execute();
|
||||
if (!response.isSuccessful()) {
|
||||
throw new Exception("Failed resetting");
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws IOException {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSyncSimple() throws IOException, Exceptions.HttpException, Exceptions.GenericCryptoException, Exceptions.IntegrityException {
|
||||
Exception caught;
|
||||
JournalManager journalManager = new JournalManager(httpClient, remote);
|
||||
CollectionInfo info = CollectionInfo.defaultForServiceType(CollectionInfo.Type.ADDRESS_BOOK);
|
||||
info.url = JournalManager.Journal.genUid();
|
||||
info.displayName = "Test";
|
||||
Crypto.CryptoManager crypto = new Crypto.CryptoManager(info.version, Helpers.keyBase64, info.url);
|
||||
JournalManager.Journal journal = new JournalManager.Journal(crypto, info.toJson(), info.url);
|
||||
journalManager.putJournal(journal);
|
||||
|
||||
// Try pushing the same journal (uid clash)
|
||||
try {
|
||||
caught = null;
|
||||
journalManager.putJournal(journal);
|
||||
} catch (Exceptions.HttpException e) {
|
||||
caught = e;
|
||||
}
|
||||
assertNotNull(caught);
|
||||
|
||||
List<JournalManager.Journal> journals = journalManager.getJournals(Helpers.keyBase64);
|
||||
assertEquals(journals.size(), 1);
|
||||
CollectionInfo info2 = CollectionInfo.fromJson(journals.get(0).getContent(crypto));
|
||||
assertEquals(info2.displayName, info.displayName);
|
||||
|
||||
// Update journal
|
||||
info.displayName = "Test 2";
|
||||
journal = new JournalManager.Journal(crypto, info.toJson(), info.url);
|
||||
journalManager.updateJournal(journal);
|
||||
|
||||
journals = journalManager.getJournals(Helpers.keyBase64);
|
||||
assertEquals(journals.size(), 1);
|
||||
info2 = CollectionInfo.fromJson(journals.get(0).getContent(crypto));
|
||||
assertEquals(info2.displayName, info.displayName);
|
||||
|
||||
// Delete journal
|
||||
journalManager.deleteJournal(journal);
|
||||
|
||||
journals = journalManager.getJournals(Helpers.keyBase64);
|
||||
assertEquals(journals.size(), 0);
|
||||
|
||||
// Bad HMAC
|
||||
info.url = JournalManager.Journal.genUid();
|
||||
journal = new JournalManager.Journal(crypto, info.toJson(), info.url);
|
||||
info.displayName = "Test 3";
|
||||
//// We assume this doesn't update the hmac.
|
||||
journal.setContent(crypto, info.toJson());
|
||||
journalManager.putJournal(journal);
|
||||
|
||||
try {
|
||||
caught = null;
|
||||
journalManager.getJournals(Helpers.keyBase64);
|
||||
} catch (Exceptions.IntegrityException e) {
|
||||
caught = e;
|
||||
}
|
||||
assertNotNull(caught);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user