internal static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Custom API tests");

            DateTime now = DateTime.UtcNow;
            int seed = now.Year * 10000 + now.Month * 100 + now.Day;
            Random rndGen = new Random(seed);

#if !NET45
            result.AddTest(ZumoLoginTests.CreateLogoutTest());
#endif

            result.AddTest(CreateHttpContentApiTest(DataFormat.Xml, DataFormat.Json, rndGen));

#if !NET45
            List<ZumoTest> testsWhichNeedAuth = new List<ZumoTest>();

            foreach (ApiPermissions apiPermission in Util.EnumGetValues(typeof(ApiPermissions)))
            {
                testsWhichNeedAuth.Add(CreateJTokenApiTest(apiPermission, false, rndGen));
            }

            testsWhichNeedAuth.Add(ZumoLoginTests.CreateLoginTest(MobileServiceAuthenticationProvider.Google));
            testsWhichNeedAuth.Add(CreateJTokenApiTest(ApiPermissions.User, true, rndGen));
            testsWhichNeedAuth.Add(ZumoLoginTests.CreateLogoutTest());

            foreach (var test in testsWhichNeedAuth)
            {
                test.CanRunUnattended = false;
                result.AddTest(test);
            }
#endif

            foreach (DataFormat inputFormat in Util.EnumGetValues(typeof(DataFormat)))
            {
                foreach (DataFormat outputFormat in Util.EnumGetValues(typeof(DataFormat)))
                {
                    result.AddTest(CreateHttpContentApiTest(inputFormat, outputFormat, rndGen));
                }
            }


            result.AddTest(ZumoQueryTests.CreatePopulateTableTest());
            foreach (TypedTestType testType in Util.EnumGetValues(typeof(TypedTestType)))
            {
                result.AddTest(CreateTypedApiTest(rndGen, testType));
            }

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Tests Setup");
            result.AddTest(CreateSetupTest());

            return result;
        }
예제 #3
0
        private static ZumoTestGroup CreateGroupWithAllTests(List<ZumoTestGroup> testGroups, bool unattendedOnly)
        {
            ZumoTestGroup result = new ZumoTestGroup(unattendedOnly ? AllTestsUnattendedGroupName : AllTestsGroupName);
            foreach (var group in testGroups)
            {
                result.AddTest(ZumoTestCommon.CreateSeparator("Start of group: " + group.Name));
                foreach (var test in group.AllTests)
                {
                    if (test.CanRunUnattended || !unattendedOnly)
                    {
                        result.AddTest(test);
                    }
                }

                result.AddTest(ZumoTestCommon.CreateSeparator("------------------"));
            }

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Misc tests");
            
            result.AddTest(CreateFilterTestWithMultipleRequests(true));
            result.AddTest(CreateFilterTestWithMultipleRequests(false));
            result.AddTest(new ZumoTest("Validate that 'WithFilter' doesn't change client", async delegate(ZumoTest test)
            {
                var client = ZumoTestGlobals.Instance.Client;
                var filteredClient = client.WithFilter(new FilterWhichThrows());
                var table = client.GetTable<RoundTripTableItem>();
                var items = await table.Take(5).ToListAsync();
                test.AddLog("Retrieved items successfully, without filter which throws affecting request.");
                return true;
            }));

            result.AddTest(new ZumoTest("Validate that filter can bypass service", async delegate(ZumoTest test)
            {
                var client = ZumoTestGlobals.Instance.Client;
                string json = "{'id':1,'name':'John Doe','age':33}".Replace('\'', '\"');
                var filtered = client.WithFilter(new FilterToBypassService(201, "application/json", json));
                var table = filtered.GetTable("TableWhichDoesNotExist");
                var item = new JsonObject();
                await table.InsertAsync(item);
                List<string> errors = new List<string>();
                if (!Util.CompareJson(JsonObject.Parse(json), item, errors))
                {
                    foreach (var error in errors)
                    {
                        test.AddLog(error);
                    }

                    test.AddLog("Error comparing object returned by the filter");
                    return false;
                }
                else
                {
                    return true;
                }
            }));

            result.AddTest(CreateUserAgentValidationTest());
            result.AddTest(CreateParameterPassingTest(true));
            result.AddTest(CreateParameterPassingTest(false));
            return result;
        }
예제 #5
0
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Misc tests");
            
            result.AddTest(CreateFilterTestWithMultipleRequests(true));
            result.AddTest(CreateFilterTestWithMultipleRequests(false));

            result.AddTest(new ZumoTest("Validate that filter can bypass service", async delegate(ZumoTest test)
            {
                string json = "{'id':1,'name':'John Doe','age':33}".Replace('\'', '\"');
                var client = new MobileServiceClient(
                    ZumoTestGlobals.Instance.Client.ApplicationUri,
                    ZumoTestGlobals.Instance.Client.ApplicationKey,
                    new HandlerToBypassService(201, "application/json", json));
                var table = client.GetTable("TableWhichDoesNotExist");
                var item = new JObject();
                var inserted = await table.InsertAsync(item);
                List<string> errors = new List<string>();
                if (!Util.CompareJson(JObject.Parse(json), inserted, errors))
                {
                    foreach (var error in errors)
                    {
                        test.AddLog(error);
                    }

                    test.AddLog("Error comparing object returned by the filter");
                    return false;
                }
                else
                {
                    return true;
                }
            }));

            result.AddTest(CreateUserAgentValidationTest());
            result.AddTest(CreateParameterPassingTest(true));
            result.AddTest(CreateParameterPassingTest(false));
            return result;
        }
예제 #6
0
        private async void btnRunSelected_Click_1(object sender, RoutedEventArgs e)
        {
            var items = this.lstTests.SelectedItems;
            if (items.Count == 0)
            {
                await Alert("Error", "No tests selected");
            }
            else
            {
                ZumoTestGroup partialGroup = new ZumoTestGroup("Partial test group");
                foreach (ListViewForTest test in items)
                {
                    partialGroup.AddTest(test.Test);
                }

                await this.RunTestGroup(partialGroup);
            }
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Login tests");
            result.AddTest(CreateLogoutTest());
            result.AddTest(CreateCRUDTest(TablePublicPermission, null, TablePermission.Public, false));
            result.AddTest(CreateCRUDTest(TableApplicationPermission, null, TablePermission.Application, false));
            result.AddTest(CreateCRUDTest(TableUserPermission, null, TablePermission.User, false));
            result.AddTest(CreateCRUDTest(TableAdminPermission, null, TablePermission.Admin, false));

            int indexOfTestsWithAuthentication = result.AllTests.Count();

            Dictionary<MobileServiceAuthenticationProvider, bool> providersWithRecycledTokenSupport;
            providersWithRecycledTokenSupport = new Dictionary<MobileServiceAuthenticationProvider, bool>
            {
                { MobileServiceAuthenticationProvider.Facebook, true },
                { MobileServiceAuthenticationProvider.Google, false },   // Known bug - Drop login via Google token until Google client flow is reintroduced
                { MobileServiceAuthenticationProvider.MicrosoftAccount, false },
                { MobileServiceAuthenticationProvider.Twitter, false },
                { MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, false }
            };

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("In the next few tests you will be prompted for username / password five times."));
#endif

            foreach (MobileServiceAuthenticationProvider provider in Util.EnumGetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
#if !WINDOWS_PHONE
                result.AddTest(CreateLoginTest(provider, false));
#else
                result.AddTest(CreateLoginTest(provider));
#endif
                result.AddTest(CreateCRUDTest(TableApplicationPermission, provider.ToString(), TablePermission.Application, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, true));
                result.AddTest(CreateCRUDTest(TableAdminPermission, provider.ToString(), TablePermission.Admin, true));

                bool supportsTokenRecycling;
                if (providersWithRecycledTokenSupport.TryGetValue(provider, out supportsTokenRecycling) && supportsTokenRecycling)
                {
                    result.AddTest(CreateLogoutTest());
                    result.AddTest(CreateClientSideLoginTest(provider));
                    result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, userIsAuthenticated: true, usingSingleSignOnOrToken: true));
                }
            }

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for username / password five times?", true));
#endif

            result.AddTest(CreateLogoutTest());

#if WINDOWS_PHONE && !WP75
            result.AddTest(ZumoTestCommon.CreateInputTest("Enter Live App Client ID", testPropertyBag, ClientIdKeyName));
#endif

#if !WP75
            result.AddTest(CreateLiveSDKLoginTest());
            result.AddTest(CreateCRUDTest(TableUserPermission, MicrosoftViaLiveSDK, TablePermission.User, true));
#endif

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("We'll log in again; you may or may not be asked for password in the next few moments."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                if (provider == MobileServiceAuthenticationProvider.MicrosoftAccount)
                {
                    // Known issue - SSO with MS account will not work if Live SDK is also used
                    continue;
                }

                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, userIsAuthenticated: true, usingSingleSignOnOrToken: true));
            }

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("Now we'll continue running the tests, but you *should not be prompted for the username or password anymore*."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                if (provider == MobileServiceAuthenticationProvider.MicrosoftAccount)
                {
                    // Known issue - SSO with MS account will not work if Live SDK is also used
                    continue;
                }

                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, userIsAuthenticated: true, usingSingleSignOnOrToken: true));
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for the username in any of the providers?", false));
#endif

            foreach (var test in result.AllTests.Skip(indexOfTestsWithAuthentication))
            {
                test.CanRunUnattended = false;
            }

            // Clean-up any logged in user
            result.AddTest(CreateLogoutTest());

            return result;
        }
예제 #8
0
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Push tests");
            const string imageUrl = "http://zumotestserver.azurewebsites.net/content/zumo2.png";
            const string wideImageUrl = "http://zumotestserver.azurewebsites.net/content/zumo1.png";
            result.AddTest(CreateRegisterChannelTest());
            result.AddTest(CreateToastPushTest("sendToastText01", "hello world"));
            result.AddTest(CreateToastPushTest("sendToastImageAndText03", "ts-iat3-1", "ts-iat3-2", null, imageUrl, "zumo"));
            result.AddTest(CreateToastPushTest("sendToastImageAndText04", "ts-iat4-1", "ts-iat4-2", "ts-iat4-3", imageUrl, "zumo"));
            result.AddTest(CreateBadgePushTest(4));
            result.AddTest(CreateBadgePushTest("playing"));
            result.AddTest(CreateRawPushTest("hello world"));
            result.AddTest(CreateRawPushTest("foobaráéíóú"));
            result.AddTest(CreateTilePushTest("TileWideImageAndText02", new[] { "tl-wiat2-1", "tl-wiat2-2" }, new[] { wideImageUrl }, new[] { "zumowide" }));
            result.AddTest(CreateTilePushTest("TileWideImageCollection",
                new string[0], 
                new[] { wideImageUrl, imageUrl, imageUrl, imageUrl, imageUrl },
                new[] { "zumowide", "zumo", "zumo", "zumo", "zumo" }));
            result.AddTest(CreateTilePushTest("TileWideText02",
                new[] { "large caption", "tl-wt2-1", "tl-wt2-2", "tl-wt2-3", "tl-wt2-4", "tl-wt2-5", "tl-wt2-6", "tl-wt2-7", "tl-wt2-8" },
                new string[0], new string[0]));
            result.AddTest(CreateTilePushTest("TileSquarePeekImageAndText01",
                new[] { "tl-spiat1-1", "tl-spiat1-2", "tl-spiat1-3", "tl-spiat1-4" },
                new[] { imageUrl }, new[] { "zumo img" }));
            result.AddTest(CreateTilePushTest("TileSquareBlock",
                new[] { "24", "aliquam" },
                new string[0], new string[0]));

            result.AddTest(CreateUnregisterChannelTest());
            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Push tests");
            const string imageUrl = "http://zumotestserver.azurewebsites.net/content/zumo2.png";
            const string wideImageUrl = "http://zumotestserver.azurewebsites.net/content/zumo1.png";
            result.AddTest(CreateRegisterChannelTest());
            result.AddTest(CreateToastPushTest("first text", "second text"));
            result.AddTest(CreateToastPushTest("ãéìôü ÇñÑ", "الكتاب على الطاولة"));
            result.AddTest(CreateToastPushTest("这本书在桌子上", "本は机の上に"));
            result.AddTest(CreateToastPushTest("הספר הוא על השולחן", "Книга лежит на столе"));
            result.AddTest(CreateToastPushTest("with param", "a value", "/UIElements/InputDialog"));
            result.AddTest(CreateRawPushTest("hello world"));
            result.AddTest(CreateRawPushTest("foobaráéíóú"));
            result.AddTest(CreateTilePushTest(
                "Simple tile", new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative), 0,
                "Simple tile", 
                new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative), "Back title", "Back content"));
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("After clicking OK, make sure the application is pinned to the start menu"));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Is the app in the start menu?", true));
            result.AddTest(CreateTilePushTest("Tile with image", new Uri(imageUrl), 3, "Test title", new Uri(wideImageUrl), "Back title", "Back content"));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Did the tile change?", true, 3000));
            result.AddTest(CreateFlipTilePushTest("Flip tile",
                new Uri("/Assets/Tiles/FlipCycleTileMedium.png", UriKind.Relative), 5, "Flip title",
                new Uri("/Assets/Tiles/IconicTileSmall.png", UriKind.Relative), "Flip back title", "Flip back content",
                new Uri("/Assets/Tiles/FlipCycleTileSmall.png", UriKind.Relative), new Uri("/Assets/Tiles/FlipCycleTileLarge.png", UriKind.Relative),
                "Flip wide back content", new Uri("/Assets/Tiles/FlipCycleTileLarge.png", UriKind.Relative)));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Did the tile change?", true, 3000));

            result.AddTest(CreateUnregisterChannelTest());
            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Push tests");
            result.AddTest(CreateRegisterChannelTest());
            result.AddTest(CreateToastPushTest("first text", "second text"));
            result.AddTest(CreateToastPushTest("ãéìôü ÇñÑ", "الكتاب على الطاولة"));
            result.AddTest(CreateToastPushTest("这本书在桌子上", "本は机の上に"));
            result.AddTest(CreateToastPushTest("הספר הוא על השולחן", "Книга лежит на столе"));
            result.AddTest(CreateToastPushTest("with param", "a value", "/UIElements/InputDialog"));
            result.AddTest(CreateRawPushTest("hello world"));
            result.AddTest(CreateRawPushTest("foobaráéíóú"));
            result.AddTest(CreateTilePushTest(
                "Simple tile", new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative), 0,
                "Simple tile",
                new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.Relative), "Back title", "Back content"));
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("After clicking OK, make sure the application is pinned to the start menu"));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Is the app in the start menu?", true));
            result.AddTest(CreateTilePushTest("Tile with image", new Uri(imageUrl), 3, "Test title", new Uri(wideImageUrl), "Back title", "Back content"));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Did the tile change?", true, 3000));
            result.AddTest(CreateFlipTilePushTest("Flip tile",
                new Uri("/Assets/Tiles/FlipCycleTileMedium.png", UriKind.Relative), 5, "Flip title",
                new Uri("/Assets/Tiles/IconicTileSmall.png", UriKind.Relative), "Flip back title", "Flip back content",
                new Uri("/Assets/Tiles/FlipCycleTileSmall.png", UriKind.Relative), new Uri("/Assets/Tiles/FlipCycleTileLarge.png", UriKind.Relative),
                "Flip wide back content", new Uri("/Assets/Tiles/FlipCycleTileLarge.png", UriKind.Relative)));
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Did the tile change?", true, 3000));

            result.AddTest(CreateUnregisterChannelTest());

            result.AddTest(CreateRegisterChannelTest(true, "toast"));
            result.AddTest(CreateToastPushTest("World News in English!", null, null, true));
            result.AddTest(CreateUnregisterChannelTest(true, "wp8" + ZumoPushTestGlobals.NHToastTemplateName));
            result.AddTest(CreateRegisterChannelTest(true, "tile"));
            result.AddTest(CreateTilePushTest("Tile Template", new Uri(imageUrl), 3, "在普通话的世界新闻!", null, null, null, true));
            result.AddTest(CreateUnregisterChannelTest(true, "wp8" + ZumoPushTestGlobals.NHTileTemplateName));
            result.AddTest(CreateRegisterChannelTest(true, "raw"));
            result.AddTest(CreateRawPushTest("Nouvelles du monde en français!", true));
            result.AddTest(CreateUnregisterChannelTest(true, "wp8" + ZumoPushTestGlobals.NHRawTemplateName));

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Login tests");
            result.AddTest(CreateLogoutTest());
            result.AddTest(CreateCRUDTest(TablePublicPermission, null, TablePermission.Public, false));
            result.AddTest(CreateCRUDTest(TableApplicationPermission, null, TablePermission.Application, false));
            result.AddTest(CreateCRUDTest(TableUserPermission, null, TablePermission.User, false));
            result.AddTest(CreateCRUDTest(TableAdminPermission, null, TablePermission.Admin, false));

            Dictionary<MobileServiceAuthenticationProvider, bool> providersWithRecycledTokenSupport;
            providersWithRecycledTokenSupport = new Dictionary<MobileServiceAuthenticationProvider, bool>
            {
                { MobileServiceAuthenticationProvider.Facebook, true },
                { MobileServiceAuthenticationProvider.Google, true },
                { MobileServiceAuthenticationProvider.MicrosoftAccount, false },
                { MobileServiceAuthenticationProvider.Twitter, false },
            };

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("In the next few tests you will be prompted for username / password four times."));
#endif

            foreach (MobileServiceAuthenticationProvider provider in Util.EnumGetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
#if !WINDOWS_PHONE
                result.AddTest(CreateLoginTest(provider, false));
#else
                result.AddTest(CreateLoginTest(provider));
#endif
                result.AddTest(CreateCRUDTest(TableApplicationPermission, provider.ToString(), TablePermission.Application, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, true));
                result.AddTest(CreateCRUDTest(TableAdminPermission, provider.ToString(), TablePermission.Admin, true));

                bool supportsTokenRecycling;
                if (providersWithRecycledTokenSupport.TryGetValue(provider, out supportsTokenRecycling) && supportsTokenRecycling)
                {
                    result.AddTest(CreateLogoutTest());
                    result.AddTest(CreateClientSideLoginTest(provider));
                    result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, true));
                }
            }

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for username / password four times?", true));
#endif

            result.AddTest(CreateLogoutTest());

#if WINDOWS_PHONE && !WP75
            result.AddTest(ZumoTestCommon.CreateInputTest("Enter Live App Client ID", testPropertyBag, ClientIdKeyName));
#endif

#if !WP75
            result.AddTest(CreateLiveSDKLoginTest());
            result.AddTest(CreateCRUDTest(TableUserPermission, "Microsoft via Live SDK", TablePermission.User, true));
#endif

#if !WINDOWS_PHONE
            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("We'll log in again; you may or may not be asked for password in the next few moments."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                if (provider == MobileServiceAuthenticationProvider.MicrosoftAccount)
                {
                    // Known issue - SSO with MS account will not work if Live SDK is also used
                    continue;
                }

                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("Now we'll continue running the tests, but you *should not be prompted for the username or password anymore*."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                if (provider == MobileServiceAuthenticationProvider.MicrosoftAccount)
                {
                    // Known issue - SSO with MS account will not work if Live SDK is also used
                    continue;
                }

                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest(TableUserPermission, provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for the username in any of the providers?", false));
#endif

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Push tests");
            result.AddTest(CreateRegisterChannelTest());
            result.AddTest(CreateToastPushTest("sendToastText01", "hello world"));
            result.AddTest(CreateToastPushTest("sendToastImageAndText03", "ts-iat3-1", "ts-iat3-2", null, imageUrl, "zumo"));
            result.AddTest(CreateToastPushTest("sendToastImageAndText04", "ts-iat4-1", "ts-iat4-2", "ts-iat4-3", imageUrl, "zumo"));
            result.AddTest(CreateBadgePushTest(4));
            result.AddTest(CreateBadgePushTest("playing"));
            result.AddTest(CreateRawPushTest("hello world"));
            result.AddTest(CreateRawPushTest("foobaráéíóú"));
            result.AddTest(CreateTilePushTest("TileWideImageAndText02", new[] { "tl-wiat2-1", "tl-wiat2-2" }, new[] { wideImageUrl }, new[] { "zumowide" }));
            result.AddTest(CreateTilePushTest("TileWideImageCollection",
                new string[0],
                new[] { wideImageUrl, imageUrl, imageUrl, imageUrl, imageUrl },
                new[] { "zumowide", "zumo", "zumo", "zumo", "zumo" }));
            result.AddTest(CreateTilePushTest("TileWideText02",
                new[] { "large caption", "tl-wt2-1", "tl-wt2-2", "tl-wt2-3", "tl-wt2-4", "tl-wt2-5", "tl-wt2-6", "tl-wt2-7", "tl-wt2-8" },
                new string[0], new string[0]));
            result.AddTest(CreateTilePushTest("TileSquarePeekImageAndText01",
                new[] { "tl-spiat1-1", "tl-spiat1-2", "tl-spiat1-3", "tl-spiat1-4" },
                new[] { imageUrl }, new[] { "zumo img" }));
            result.AddTest(CreateTilePushTest("TileSquareBlock",
                new[] { "24", "aliquam" },
                new string[0], new string[0]));
            result.AddTest(CreateUnregisterChannelTest());
            result.AddTest(CreateRegisterTemplateChannelTest("Toast"));
            result.AddTest(CreateTemplateToastPushTest("sendToastText01", "World News in English!"));
            result.AddTest(CreateUnregisterTemplateChannelTest(ZumoPushTestGlobals.NHToastTemplateName));
            result.AddTest(CreateRegisterTemplateChannelTest("Tile"));
            result.AddTest(CreateTemplateTilePushTest("TileWideImageAndText02", new[] { "tl-wiat2-1", "在普通话的世界新闻!" }, new[] { wideImageUrl }, new[] { "zumowide" }));
            result.AddTest(CreateUnregisterTemplateChannelTest(ZumoPushTestGlobals.NHTileTemplateName));
            result.AddTest(CreateRegisterTemplateChannelTest("Badge"));
            result.AddTest(CreateTemplateBadgePushTest("10"));
            result.AddTest(CreateUnregisterTemplateChannelTest(ZumoPushTestGlobals.NHBadgeTemplateName));
            result.AddTest(CreateRegisterTemplateChannelTest("Raw"));
            result.AddTest(CreateTemplateRawPushTest("Nouvelles du monde en français!"));
            result.AddTest(CreateUnregisterTemplateChannelTest(ZumoPushTestGlobals.NHRawTemplateName));

            return result;
        }
예제 #13
0
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Login tests");
            result.AddTest(CreateLogoutTest());
            result.AddTest(CreateCRUDTest("w8Application", null, TablePermission.Application, false));
            result.AddTest(CreateCRUDTest("w8Authenticated", null, TablePermission.User, false));
            result.AddTest(CreateCRUDTest("w8Admin", null, TablePermission.Admin, false));

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("In the next few tests you will be prompted for username / password four times."));

            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, false));
                result.AddTest(CreateCRUDTest("w8Application", provider.ToString(), TablePermission.Application, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
                result.AddTest(CreateCRUDTest("w8Admin", provider.ToString(), TablePermission.Admin, true));
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for username / password four times?", true));

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("We'll log in again; you may or may not be asked for password in the next few moments."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("Now we'll continue running the tests, but you *should not be prompted for the username anymore, and in some even the password should also not be required."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for the username in any of the providers?", false));

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Login tests");
            result.AddTest(CreateLogoutTest());
            result.AddTest(CreateCRUDTest("w8Public", null, TablePermission.Public, false));
            result.AddTest(CreateCRUDTest("w8Application", null, TablePermission.Application, false));
            result.AddTest(CreateCRUDTest("w8Authenticated", null, TablePermission.User, false));
            result.AddTest(CreateCRUDTest("w8Admin", null, TablePermission.Admin, false));

            Dictionary<MobileServiceAuthenticationProvider, bool> providersWithRecycledTokenSupport;
            providersWithRecycledTokenSupport = new Dictionary<MobileServiceAuthenticationProvider, bool>
            {
                { MobileServiceAuthenticationProvider.Facebook, true },
                { MobileServiceAuthenticationProvider.Google, true },
                { MobileServiceAuthenticationProvider.MicrosoftAccount, false },
                { MobileServiceAuthenticationProvider.Twitter, false },
            };

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("In the next few tests you will be prompted for username / password four times."));

            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, false));
                result.AddTest(CreateCRUDTest("w8Application", provider.ToString(), TablePermission.Application, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
                result.AddTest(CreateCRUDTest("w8Admin", provider.ToString(), TablePermission.Admin, true));

                bool supportsTokenRecycling;
                if (providersWithRecycledTokenSupport.TryGetValue(provider, out supportsTokenRecycling) && supportsTokenRecycling)
                {
                    result.AddTest(CreateLogoutTest());
                    result.AddTest(CreateClientSideLoginTest(provider));
                    result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
                }
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for username / password four times?", true));

            //result.AddTest(CreateLogoutTest());
            //result.AddTest(CreateLiveSDKLoginTest());
            //result.AddTest(CreateCRUDTest("w8Authenticated", "Microsoft via Live SDK", TablePermission.User, true));

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("We'll log in again; you may or may not be asked for password in the next few moments."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateTestWithSingleAlert("Now we'll continue running the tests, but you *should not be prompted for the username anymore, and in some even the password should also not be required."));
            foreach (MobileServiceAuthenticationProvider provider in Enum.GetValues(typeof(MobileServiceAuthenticationProvider)))
            {
                result.AddTest(CreateLogoutTest());
                result.AddTest(CreateLoginTest(provider, true));
                result.AddTest(CreateCRUDTest("w8Authenticated", provider.ToString(), TablePermission.User, true));
            }

            result.AddTest(ZumoTestCommon.CreateYesNoTest("Were you prompted for the username in any of the providers?", false));

            return result;
        }
        public static ZumoTestGroup CreateTests()
        {
            ZumoTestGroup result = new ZumoTestGroup("Misc tests");
            
            result.AddTest(CreateFilterTestWithMultipleRequests(true));
            result.AddTest(CreateFilterTestWithMultipleRequests(false));

            result.AddTest(new ZumoTest("Validate that filter can bypass service", async delegate(ZumoTest test)
            {
                string json = "{'id':1,'name':'John Doe','age':33}".Replace('\'', '\"');
                var client = new MobileServiceClient(
                    ZumoTestGlobals.Instance.Client.ApplicationUri,
                    ZumoTestGlobals.Instance.Client.ApplicationKey,
                    new HandlerToBypassService(201, "application/json", json));
                var table = client.GetTable("TableWhichDoesNotExist");
                var item = new JObject();
                var inserted = await table.InsertAsync(item);
                List<string> errors = new List<string>();
                if (!Util.CompareJson(JObject.Parse(json), inserted, errors))
                {
                    foreach (var error in errors)
                    {
                        test.AddLog(error);
                    }

                    test.AddLog("Error comparing object returned by the filter");
                    return false;
                }
                else
                {
                    return true;
                }
            }));

            result.AddTest(CreateUserAgentValidationTest());
            result.AddTest(CreateParameterPassingTest(true));
            result.AddTest(CreateParameterPassingTest(false));

            result.AddTest(CreateOptimisticConcurrencyTest("Conflicts (client side) - client wins", (clientItem, serverItem) =>
            {
                var mergeResult = clientItem.Clone();
                mergeResult.Version = serverItem.Version;
                return mergeResult;
            }));
            result.AddTest(CreateOptimisticConcurrencyTest("Conflicts (client side) - server wins", (clientItem, serverItem) =>
            {
                return serverItem;
            }));
            result.AddTest(CreateOptimisticConcurrencyTest("Conflicts (client side) - Name from client, Number from server", (clientItem, serverItem) =>
            {
                var mergeResult = serverItem.Clone();
                mergeResult.Name = clientItem.Name;
                return mergeResult;
            }));

            result.AddTest(CreateOptimisticConcurrencyWithServerConflictsTest("Conflicts (server side) - client wins", true));
            result.AddTest(CreateOptimisticConcurrencyWithServerConflictsTest("Conflicts (server side) - server wins", false));

            result.AddTest(CreateSystemPropertiesTest(true));
            result.AddTest(CreateSystemPropertiesTest(false));

            return result;
        }