private static void EnsurePackageDataIsEmpty(PluginDatabase db, string testPackageA) { if (String.IsNullOrEmpty(db.GetRequestToken(testPackageA))) { throw new Exception("invalid request token"); } if (db.GetAccessToken(testPackageA) != null) { throw new Exception("invalid access token!"); } if (db.GetPluginScopes(testPackageA).Count > 0) { throw new Exception("Unexpected scopes!"); } }
private void EnsurePackageHasUnacceptedScope(PluginDatabase db, string plugin, string scope) { if (String.IsNullOrEmpty(db.GetRequestToken(plugin))) { throw new Exception("invalid request token"); } if (db.GetAccessToken(plugin) != null) { throw new Exception("invalid access token!"); } if (db.GetPluginScopes(plugin).Count != 1) { throw new Exception("Unexpected scopes!"); } if (db.GetPluginScopes(plugin).First() != scope) { throw new Exception("Unexpected scope in db!"); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById <Button>(Resource.Id.MyButton); button.Click += delegate { PluginHost.TriggerRequests(this); }; FindViewById <Button>(Resource.Id.managePluginsButton).Click += delegate(object sender, EventArgs args) { StartActivity(new Intent(this, typeof(PluginListActivity))); }; FindViewById <Button>(Resource.Id.entryviewButton).Click += delegate { StartActivity(new Intent(this, typeof(EntryActivity))); }; FindViewById <Button>(Resource.Id.testDbButton).Click += delegate { string message = "ok. "; try { Stopwatch sw = new Stopwatch(); sw.Start(); PluginDatabase db = new PluginDatabase(this); db.Clear(); if (db.GetAllPluginPackages().Count() != 0) { throw new Exception("db not empty!"); } const string testPackageA = "test.package.a"; const string testPackageB = "test.package.b"; db.ClearPlugin(testPackageA); db.ClearPlugin(testPackageB); EnsurePackageDataIsEmpty(db, testPackageA); EnsurePackageDataIsEmpty(db, testPackageB); string[] requestedScopes = { Strings.ScopeDatabaseActions }; db.StorePlugin(testPackageA, null, requestedScopes); EnsurePackageDataIsEmpty(db, testPackageB); EnsurePackageDataIsEmpty(new PluginDatabase(this), testPackageB); db.StorePlugin(testPackageB, null, requestedScopes); EnsurePackageHasUnacceptedScope(db, testPackageA, Strings.ScopeDatabaseActions); EnsurePackageHasUnacceptedScope(db, testPackageB, Strings.ScopeDatabaseActions); EnsurePackageHasUnacceptedScope(new PluginDatabase(this), testPackageA, Strings.ScopeDatabaseActions); if (db.GetAllPluginPackages().Count() != 2) { throw new Exception("wrong count of plugins"); } if (db.GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Any()) { throw new Exception("wrong count of accepted plugins"); } if (new PluginDatabase(this).GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Any()) { throw new Exception("wrong count of accepted plugins"); } db.SetEnabled(testPackageA, true); if (db.GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Single() != testPackageA) { throw new Exception("wrong plugin"); } if (new PluginDatabase(this).GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Single() != testPackageA) { throw new Exception("wrong plugin"); } if (db.GetPluginsWithAcceptedScope("somescope").Any()) { throw new Exception("wrong count of accepted plugins"); } var accessTokenA = db.GetAccessToken(testPackageA); if (String.IsNullOrEmpty(accessTokenA)) { throw new Exception("expected access token!"); } if (!db.IsEnabled(testPackageA)) { throw new Exception("plugin not enabled!"); } if (db.IsEnabled(testPackageB)) { throw new Exception("plugin enabled!"); } if (!db.IsValidAccessToken(testPackageA, accessTokenA, Strings.ScopeDatabaseActions)) { throw new Exception("invalid token!"); } db.SetEnabled(testPackageA, false); if (db.IsValidAccessToken(testPackageA, accessTokenA, Strings.ScopeDatabaseActions)) { throw new Exception("valid token?!"); } if (db.GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Any()) { throw new Exception("unexpected!"); } new PluginDatabase(this).SetEnabled(testPackageB, true); if (!db.IsEnabled(testPackageB)) { throw new Exception("plugin not enabled!"); } db.SetEnabled(testPackageA, true); accessTokenA = db.GetAccessToken(testPackageA); message += sw.ElapsedMilliseconds + "ms"; Stopwatch swQuery = new Stopwatch(); swQuery.Start(); int n = 3; for (int i = 0; i < n; i++) { if (db.GetPluginsWithAcceptedScope(Strings.ScopeDatabaseActions).Count() != 2) { throw new Exception("wrong plugin"); } if (!db.IsValidAccessToken(testPackageA, accessTokenA, Strings.ScopeDatabaseActions)) { throw new Exception("invalid token"); } } message += "/ " + swQuery.ElapsedMilliseconds / (double)n / 2.0 + "ms for query"; } catch (Exception exception) { message = exception.ToString(); } Toast.MakeText(this, message, ToastLength.Long).Show(); }; }