/// <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(); }