Пример #1
0
END_TEST

START_TEST (archive_save_data)
{
	char *testbed = setup_testbed("merger");

	OSyncError *error = NULL;
	OSyncArchive *archive = osync_archive_new("archive.db", &error);
	fail_unless(archive != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	OSyncList *ids;
	OSyncList *uids;
	OSyncList *mappingids;
	OSyncList *memberids;
	osync_archive_load_changes(archive, "contact", &ids, &uids, &mappingids, &memberids, &error);
	
	long long int id = osync_archive_save_change(archive, 0, "uid", "contact", 1, 1, &error);
	fail_unless(id != 0, NULL);
	fail_unless(error == NULL, NULL);
	
	const char *testdata = "testdata";
	unsigned int testsize = strlen(testdata);
	fail_unless(osync_archive_save_data(archive, 1, "contact", testdata, testsize, &error) == TRUE, NULL);
	fail_unless(error == NULL, NULL);
		
	osync_archive_unref(archive);

	destroy_testbed(testbed);
}
Пример #2
0
END_TEST

START_TEST (archive_save_change)
{
	char *testbed = setup_testbed("merger");

	OSyncError *error = NULL;
	OSyncArchive *archive = osync_archive_new("archive.db", &error);
	fail_unless(archive != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	OSyncList *ids;
	OSyncList *uids;
	OSyncList *mappingids;
	OSyncList *memberids;
	osync_archive_load_changes(archive, "contact", &ids, &uids, &mappingids, &memberids, &error);
	
	long long int id = osync_archive_save_change(archive, 0, "uid", "contact", 1, 1, &error);
	fail_unless(id != 0, NULL);
	fail_unless(error == NULL, NULL);
		
	osync_archive_unref(archive);

	destroy_testbed(testbed);
}
Пример #3
0
END_TEST

START_TEST (module_function_false)
{
	char *testbed = setup_testbed(NULL);
	
	OSyncError *error = NULL;
	OSyncModule *module = osync_module_new(&error);
	fail_unless(module != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	char *curdir = g_get_current_dir();
	char *path = g_strdup_printf("%s/formats/mock-format.%s", curdir, G_MODULE_SUFFIX);
	fail_unless(osync_module_load(module, path, &error), NULL);
	fail_unless(error == NULL, NULL);
	g_free(path);
	g_free(curdir);
	
	void *func = osync_module_get_function(module, "get_version1", &error);
	fail_unless(func == NULL, NULL);
	fail_unless(error != NULL, NULL);
	osync_error_unref(&error);
	
	osync_module_unload(module);
	
	osync_module_unref(module);
	
	destroy_testbed(testbed);
}
Пример #4
0
END_TEST

START_TEST (filter_sync_custom)
{
	char *testbed = setup_testbed("filter_sync_custom");
	char *formatdir = g_strdup_printf("%s/formats",  testbed);
	char *plugindir = g_strdup_printf("%s/plugins",  testbed);
	
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_set_schemadir(group, testbed);
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	OSyncCustomFilter *custom_filter = osync_custom_filter_new("mockobjtype1", "mockformat1", "mockformat1_custom_filter", dummy_filter_hook, &error);
	fail_unless(custom_filter != NULL, NULL);

	OSyncFilter *filter = osync_filter_new_custom(custom_filter, NULL, OSYNC_FILTER_DENY, &error);

	fail_unless(filter != NULL, NULL);

	osync_group_add_filter(group, filter);

	osync_filter_set_config(filter, "test");
	
	mark_point();
  	OSyncEngine *engine = osync_engine_new(group, &error);
  	mark_point();
  	fail_unless(engine != NULL, NULL);

	osync_engine_set_plugindir(engine, plugindir);
	osync_engine_set_formatdir(engine, formatdir);
	osync_engine_set_schemadir(engine, testbed);

	fail_unless(osync_engine_initialize(engine, &error), NULL);
	synchronize_once(engine, NULL);
	osync_engine_finalize(engine, &error);

	fail_unless(osync_testing_diff("data1", "data2"), NULL);

	g_free(formatdir);
	g_free(plugindir);
	
	destroy_testbed(testbed);
}
Пример #5
0
END_TEST
#endif /* FIXME */

START_TEST(filter_destobjtype_delete)
{
	/* Check if the destobjtype of the changes is being
	 * set when the change type os DELETE */
	char *testbed = setup_testbed("destobjtype_delete");
	char *formatdir = g_strdup_printf("%s/formats",  testbed);
	char *plugindir = g_strdup_printf("%s/plugins",  testbed);
	
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_set_schemadir(group, testbed);
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	mark_point();
	OSyncEngine *engine = osync_engine_new(group, &error);
	mark_point();
	fail_unless(engine != NULL, NULL);

	osync_engine_set_plugindir(engine, plugindir);
	osync_engine_set_formatdir(engine, formatdir);
	osync_engine_set_schemadir(engine, testbed);

	fail_unless(osync_engine_initialize(engine, &error), NULL);
	synchronize_once(engine, NULL);
	mark_point();

	/* Synchronize once, delete a file, and synchronize again */

	fail_unless(!osync_testing_file_remove("data1/file"), NULL);

	synchronize_once(engine, NULL);
	mark_point();
	osync_engine_finalize(engine, &error);

	g_free(formatdir);
	g_free(plugindir);
	
	destroy_testbed(testbed);
}
Пример #6
0
END_TEST

START_TEST (mapping_compare)
{
	char *testbed = setup_testbed(NULL);
	char *formatdir = g_strdup_printf("%s/formats",  testbed);
	
	OSyncError *error = NULL;
	
	OSyncFormatEnv *formatenv = osync_format_env_new(&error);
	fail_unless(formatenv != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	fail_unless(osync_format_env_load_plugins(formatenv, formatdir, &error), NULL);
	fail_unless(error == NULL, NULL);
	
	OSyncObjFormat *format = osync_format_env_find_objformat(formatenv, "mockformat1");
	fail_unless(format != NULL, NULL);
	
	/*OSyncChange *change = osync_change_new(&error);
	fail_unless(change != NULL, NULL);
	fail_unless(error == NULL, NULL);
	osync_change_set_uid(change, "uid");*/
	
	OSyncData *data1 = osync_data_new("test", 5, format, &error);
	fail_unless(data1 != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	OSyncMapping *mapping = osync_mapping_new(&error);
	fail_unless(mapping != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	OSyncMappingEntry *entry = osync_mapping_entry_new(&error);
	fail_unless(entry != NULL, NULL);
	fail_unless(error == NULL, NULL);
	//osync_mapping_entry_update(entry, change);
	
	osync_format_env_free(formatenv);
	
	g_free(formatdir);
	
	destroy_testbed(testbed);
}
Пример #7
0
END_TEST

START_TEST (version_load_from_descriptions)
{
	char *testbed = setup_testbed(NULL);

	OSyncError *error = NULL;
	OSyncList *versions = osync_version_load_from_descriptions(&error, testbed, testbed);
	//fail_unless(versions != NULL, NULL);
	fail_unless(error == NULL, NULL);

	OSyncList *cur = osync_list_first(versions);
	while(cur) {
		osync_version_unref(cur->data);
		cur = cur->next;
	}
	osync_list_free(versions);

	destroy_testbed(testbed);
}
Пример #8
0
END_TEST

START_TEST (version_matches)
{
	char *testbed = setup_testbed(NULL);

	OSyncError *error = NULL;
	OSyncVersion *version = osync_version_new(&error);
	fail_unless(version != NULL, NULL);
	fail_unless(error == NULL, NULL);
	osync_version_set_plugin(version, "SyncML");
	osync_version_set_vendor(version, "Nokia");
	osync_version_set_modelversion(version, "7650");
	osync_version_set_firmwareversion(version, "*");
	osync_version_set_softwareversion(version, "*");
	osync_version_set_hardwareversion(version, "*");

	OSyncVersion *pattern = osync_version_new(&error);
	fail_unless(pattern != NULL, NULL);
	fail_unless(error == NULL, NULL);
	osync_version_set_plugin(pattern, "Sync[A-Z]");
	osync_version_set_priority(pattern, "100");
	osync_version_set_vendor(pattern, "Nokia");
	osync_version_set_modelversion(pattern, "[0-9]");
	osync_version_set_firmwareversion(pattern, "");
	osync_version_set_softwareversion(pattern, "");
	osync_version_set_hardwareversion(pattern, "");

	fail_unless(osync_version_matches(pattern, version, &error) > 0, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_version_set_firmwareversion(pattern, "[0-9]");

	fail_unless(osync_version_matches(pattern, version, &error) == 0, NULL);
	fail_unless(error == NULL, NULL);

	destroy_testbed(testbed);
}
Пример #9
0
END_TEST

START_TEST (module_load_false)
{
	char *testbed = setup_testbed(NULL);
	
	OSyncError *error = NULL;
	OSyncModule *module = osync_module_new(&error);
	fail_unless(module != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	char *curdir = g_get_current_dir();
	char *path = g_strdup_printf("%s/does-not-exist.%s", curdir, G_MODULE_SUFFIX);
	fail_unless(!osync_module_load(module, path, &error), NULL);
	fail_unless(error != NULL, NULL);
	g_free(path);
	g_free(curdir);
	osync_error_unref(&error);
	
	osync_module_unref(module);
	
	destroy_testbed(testbed);
}
Пример #10
0
END_TEST

/* filter flushing got dropped with OpenSync 0.30 API
START_TEST (filter_flush)
{
	char *testbed = setup_testbed("filter_setup");
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	OSyncMember *leftmember = osync_group_nth_member(group, 0);
	OSyncMember *rightmember = osync_group_nth_member(group, 1);
	
	OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);
	OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);
	fail_unless(filter1 != NULL, NULL);
	fail_unless(filter2 != NULL, NULL);

	osync_group_add_filter(group, filter1);
	osync_group_add_filter(group, filter2);
	
	mark_point();
	fail_unless(osync_group_num_filters(group) == 2, NULL);
	fail_unless(osync_group_nth_filter(group, 0) == filter1, NULL);
	fail_unless(osync_group_nth_filter(group, 1) == filter2, NULL);
	
	mark_point();
	osync_group_flush_filters(group);
	fail_unless(osync_group_num_filters(group) == 0, NULL);

	destroy_testbed(testbed);
}
END_TEST
*/

START_TEST (filter_sync_deny_all)
{
	char *testbed = setup_testbed("filter_sync_deny_all");
	char *formatdir = g_strdup_printf("%s/formats",  testbed);
	char *plugindir = g_strdup_printf("%s/plugins",  testbed);
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_set_schemadir(group, testbed);
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);
	OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);

	fail_unless(filter1 != NULL, NULL);
	fail_unless(filter2 != NULL, NULL);

	osync_group_add_filter(group, filter1);
	osync_group_add_filter(group, filter2);
	
	mark_point();
  	OSyncEngine *engine = osync_engine_new(group, &error);
  	mark_point();
  	fail_unless(engine != NULL, NULL);

	osync_engine_set_plugindir(engine, plugindir);
	osync_engine_set_formatdir(engine, formatdir);
	osync_engine_set_schemadir(engine, testbed);

	fail_unless(osync_engine_initialize(engine, &error), osync_error_print(&error));
	synchronize_once(engine, &error);
	osync_engine_finalize(engine, &error);

	fail_unless(osync_testing_file_exists("data1/testdata"), NULL);
	fail_unless(osync_testing_file_exists("data2/testdata2"), NULL);

	g_free(formatdir);
	g_free(plugindir);
	
	destroy_testbed(testbed);
}
Пример #11
0
END_TEST

/* TODO: Test filtering of different objtypes within one resource/database/path.
   Mixed objtypes in mock-sync (based on file-sync) currenlty not supported.
   Reimplement this when: data(wildcard objtype) <-> certain-objtype syncing is working again.

   Make this implementation independet of vformat plugin (feel free to rename vcard to mockobjtypeX).
   This filtering isn't about obfjromat filtering - it's about objtype filtering.
*/

/* FIXME */
#if 0
START_TEST (filter_sync_vcard_only)
{
	char *testbed = setup_testbed("filter_sync_vcard_only");
	char *formatdir = g_strdup_printf("%s/formats",  testbed);
	char *plugindir = g_strdup_printf("%s/plugins",  testbed);
	
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	/* TODO filtering isn't member sepcific anymore
	OSyncMember *rightmember = osync_group_nth_member(group, 1);

        osync_filter_add(group, NULL, rightmember, NULL, NULL, NULL, OSYNC_FILTER_DENY);
        osync_filter_add(group, NULL, rightmember, NULL, NULL, "contact", OSYNC_FILTER_ALLOW);
	*/
	
	OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);
	OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_ALLOW, &error);

	fail_unless(filter1 != NULL, NULL);
	fail_unless(filter2 != NULL, NULL);

	osync_group_add_filter(group, filter1);
	osync_group_add_filter(group, filter2);
	
	mark_point();
  	OSyncEngine *engine = osync_engine_new(group, &error);
  	mark_point();
  	fail_unless(engine != NULL, NULL);

	osync_engine_set_plugindir(engine, plugindir);
	osync_engine_set_formatdir(engine, formatdir);
	osync_engine_set_schemadir(engine, testbed);

	fail_unless(osync_engine_initialize(engine, &error), NULL);
	synchronize_once(engine, NULL);
	osync_engine_finalize(engine, &error);
	osync_engine_unref(engine);

	fail_unless(osync_testing_file_exists("data1/testdata"), NULL);
	fail_unless(osync_testing_file_exists("data1/testdata2"), NULL);
	fail_unless(osync_testing_file_exists("data1/testdata3"), NULL);
	fail_unless(osync_testing_file_exists("data1/vcard.vcf"), NULL);

	fail_unless(osync_testing_file_exists("data2/testdata3"), NULL);
	fail_unless(osync_testing_file_exists("data2/vcard.vcf"), NULL);

	g_free(formatdir);
	g_free(plugindir);
	
	destroy_testbed(testbed);
}
Пример #12
0
END_TEST

START_TEST (filter_save_and_load)
{
	char *testbed = setup_testbed("filter_save_and_load");
	OSyncError *error = NULL;

	OSyncGroup *group = osync_group_new(&error);
	fail_unless(group != NULL, NULL);
	fail_unless(error == NULL, NULL);
	
	osync_group_set_schemadir(group, testbed);
	osync_group_load(group, "configs/group", &error);
	fail_unless(error == NULL, osync_error_print(&error));
	fail_unless(group != NULL, NULL);
	mark_point();
	
	/* TODO filter member handling 
	OSyncMember *leftmember = osync_group_nth_member(group, 0);
	OSyncMember *rightmember = osync_group_nth_member(group, 1);
	*/
	OSyncCustomFilter *custom_filter = osync_custom_filter_new("mockobjtype3", "mockformat3", "mockformat1_custom_filter", dummy_filter_hook, &error);
	fail_unless(custom_filter != NULL, NULL);

	OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error);
	OSyncFilter *filter2 = osync_filter_new("mockobjtype2", OSYNC_FILTER_ALLOW, &error);

	OSyncFilter *filter3 = osync_filter_new_custom(custom_filter, "test", OSYNC_FILTER_IGNORE, &error);
	
	fail_unless(filter1 != NULL, NULL);
	fail_unless(filter2 != NULL, NULL);
	fail_unless(filter3 != NULL, NULL);

	osync_group_add_filter(group, filter1);
	osync_group_add_filter(group, filter2);
	osync_group_add_filter(group, filter3);

	fail_unless(osync_group_num_filters(group) == 3, NULL);
	fail_unless(osync_group_nth_filter(group, 0) == filter1, NULL);
	fail_unless(osync_group_nth_filter(group, 1) == filter2, NULL);
	fail_unless(osync_group_nth_filter(group, 2) == filter3, NULL);
	
	mark_point();
	osync_group_save(group, NULL);
	mark_point();

	osync_group_load(group, "configs/group", NULL);
	fail_unless(group != NULL, NULL);
	mark_point();

	fail_unless(osync_group_num_filters(group) == 3, NULL);
	filter1 = osync_group_nth_filter(group, 0);
	fail_unless(filter1 != NULL, NULL);
	/* filter aren't member specific anymore. */
	//fail_unless(filter1->sourcememberid == 1, NULL);
	//fail_unless(filter1->destmemberid == 2, NULL);
	fail_unless(!strcmp(osync_filter_get_objtype(filter1), "mockobjtype1"), NULL);
	/* cross objtype syncing isn't supported anymore with 0.30 API */
	//fail_unless(!strcmp(filter1->destobjtype, "2"), NULL);
	//fail_unless(!strcmp(filter1->detectobjtype, "3"), NULL);
	fail_unless(filter1->action == OSYNC_FILTER_DENY, NULL);
	
	filter1 = osync_group_nth_filter(group, 1);
	fail_unless(filter1 != NULL, NULL);
	/* filter aren't member specific anymore. */
	//fail_unless(filter1->sourcememberid == 2, NULL);
	//fail_unless(filter1->destmemberid == 1, NULL);
	/* cross objtype syncing isn't supported anymore with 0.30 API */
	fail_unless(!strcmp(osync_filter_get_objtype(filter1), "mockobjtype2"), NULL);
	/* cross objtype syncing isn't supported anymore with 0.30 API */
	//fail_unless(!strcmp(filter1->destobjtype, "5"), NULL);
	//fail_unless(!strcmp(filter1->detectobjtype, "6"), NULL);
	fail_unless(filter1->action == OSYNC_FILTER_ALLOW, NULL);

	filter1 = osync_group_nth_filter(group, 2);
	fail_unless(filter1 != NULL, NULL);

	/* filter aren't member specific anymore. */
	//fail_unless(filter1->sourcememberid == 1, NULL);
	//fail_unless(filter1->destmemberid == 2, NULL);
	/* cross objtype syncing isn't supported anymore with 0.30 API */

	// FIXME - custom filter handling for objtype
	///fail_unless(!strcmp(osync_filter_get_objtype(filter1), "mockobjtype3"), NULL);

	/* cross objtype syncing isn't supported anymore with 0.30 API */
	//fail_unless(!strcmp(filter1->destobjtype, "8"), NULL);
	//fail_unless(!strcmp(filter1->detectobjtype, "9"), NULL);
	fail_unless(filter1->custom_filter != NULL, NULL);
	fail_unless(filter1->custom_filter->hook != NULL, NULL);
	fail_unless(!strcmp(osync_filter_get_config(filter1), "test"), NULL);

	osync_group_unref(group);

	destroy_testbed(testbed);
}
Пример #13
0
END_TEST

START_TEST (hashtable_reload)
{
	OSyncError *error = NULL;
	char *testbed = setup_testbed(NULL);

	osync_bool new_hashtable = FALSE;

	reset_hashtable_counters();

	char *hashpath = g_strdup_printf("%s%chashtable.db", testbed, G_DIR_SEPARATOR);
	OSyncHashTable *table = osync_hashtable_new(hashpath, "contact", &new_hashtable, &error);
	fail_unless(!error, NULL);
	fail_unless(table != NULL, NULL);
	fail_unless(new_hashtable != FALSE, NULL); /* Expecting a new/fresh hastable */

	/***** load */
	fail_unless(osync_hashtable_load(table, &error), NULL);

	OSyncChange *fakechange = osync_change_new(&error);

	osync_change_set_uid(fakechange, "test1");

	char *rndhash = osync_rand_str(g_random_int_range(100, 200), &error);
	osync_assert(error == NULL);

	osync_change_set_hash(fakechange, rndhash);
	osync_change_set_changetype(fakechange, OSYNC_CHANGE_TYPE_ADDED);

	osync_hashtable_update_change(table, fakechange);
	osync_change_unref(fakechange);

	/*** store - commit hashtable */
	fail_unless(osync_hashtable_save(table, &error), NULL);
	fail_unless(!error, NULL);

	osync_hashtable_unref(table);
	table = NULL;

	/** reload the hashtable */
	OSyncHashTable *newtable = osync_hashtable_new(hashpath, "contact", &new_hashtable, &error);
	fail_unless(!error, NULL);
	fail_unless(newtable != NULL, NULL);
	fail_unless(new_hashtable != TRUE, NULL); /* We expect here no new hashtable */

	/* 0 entries - since not loaded! */
	fail_unless(osync_hashtable_num_entries(newtable) == 0, NULL);

	/* load and count and compare hashs */
	fail_unless(osync_hashtable_load(newtable, &error), NULL);

	fail_unless(osync_hashtable_num_entries(newtable) == 1, NULL);

	const char *newhash = osync_hashtable_get_hash(newtable, "test1");
	fail_unless(newhash != NULL, NULL);
	fail_unless(!strcmp(newhash, rndhash), NULL);
	g_free(rndhash);


	g_free(hashpath);

	destroy_testbed(testbed);
}