Example #1
0
        /// <summary>
        /// Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The reader to use.</param>
        /// <param name="objectType">The object type to serialize into.</param>
        /// <param name="existingValue">The current value of the property.</param>
        /// <param name="serializer">The serializer to use.</param>
        /// <returns>The deserialized <see cref="Asset"/>.</returns>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            var jObject = JObject.Load(reader);

            var spaceMembership = new SpaceMembership();

            spaceMembership.SystemProperties = jObject["sys"]?.ToObject <SystemProperties>();
            spaceMembership.Admin            = jObject.Value <bool>("admin");
            spaceMembership.Roles            = jObject.SelectTokens("$.roles..id")?.Values <string>().ToList();

            return(spaceMembership);
        }
        public static async Task Init(TestContext testContext)
        {
            byte[] encryptedInfo;
            byte[] entropy;

            Person me = null;

            try
            {
                string userDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

                var dirInfo = new DirectoryInfo(String.Format("{0}{1}.thrzn41{1}unittest{1}teams", userDir, Path.DirectorySeparatorChar));

                using (var stream = new FileStream(String.Format("{0}{1}teamsinfo.dat", dirInfo.FullName, Path.DirectorySeparatorChar), FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (var memory = new MemoryStream())
                    {
                        stream.CopyTo(memory);

                        encryptedInfo = memory.ToArray();
                    }

                using (var stream = new FileStream(String.Format("{0}{1}infoentropy.dat", dirInfo.FullName, Path.DirectorySeparatorChar), FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (var memory = new MemoryStream())
                    {
                        stream.CopyTo(memory);

                        entropy = memory.ToArray();
                    }

                var info = TeamsObject.FromJsonString <TeamsInfo>(LocalProtectedString.FromEncryptedData(encryptedInfo, entropy).DecryptToString());

                teamsController = TeamsAPI.CreateVersion1Client(info.APIToken, new TeamsRetryOnErrorHandler(4, TimeSpan.FromSeconds(15.0f)));

                var rMe = await teamsController.GetMeAsync();

                if (rMe.IsSuccessStatus)
                {
                    me = rMe.Data;

                    var e = (await teamsController.ListSpacesAsync(type: SpaceType.Group, sortBy: SpaceSortBy.Created, max: 50)).GetListResultEnumerator();

                    while (await e.MoveNextAsync())
                    {
                        var r = e.CurrentResult;

                        if (r.IsSuccessStatus && r.Data.HasItems)
                        {
                            foreach (var item in r.Data.Items)
                            {
                                if (item.Title.Contains(UNIT_TEST_SPACE_TAG))
                                {
                                    unitTestSpace = item;
                                    break;
                                }
                            }
                        }

                        if (unitTestSpace != null)
                        {
                            break;
                        }
                    }
                }


                if (unitTestSpace != null)
                {
                    guestIssuer = TeamsAPI.CreateVersion1GuestIssuerClient(info.GuestIssuerSecret, info.GuestIssuerId);

                    var r = await guestIssuer.CreateGuestUserAsync("470d916c-74ba-44c6-8e26-6fd57fa7d158", "UnitTestGuest");

                    if (r.IsSuccessStatus)
                    {
                        teamsGuest = TeamsAPI.CreateVersion1Client(r.Data, new TeamsRetryOnErrorHandler(4, TimeSpan.FromSeconds(15.0f)));

                        var rGuestMe = await teamsGuest.GetMeAsync();

                        if (rGuestMe.IsSuccessStatus)
                        {
                            me = rGuestMe.Data;

                            var rMs = await teamsController.CreateSpaceMembershipAsync(unitTestSpace, me);

                            if (rMs.IsSuccessStatus)
                            {
                                membershipGuest = rMs.Data;
                            }
                        }
                    }
                }
            }
            catch (DirectoryNotFoundException) { }
            catch (FileNotFoundException) { }


            checkTeamsAPIClient(me);
            checkUnitTestSpace();
        }