public void SetupEachTest() { var folder = "UsersAPI_NotificationTests"; // C:\Users\...\AppData\Local\Temp\UsersAPI_NotificationTests try { Directory.Delete(folder, true); } catch { } usersAPI = new UsersAPI( ExternalDNSName: "example.cloud", HTTPServerPort: IPPort.Parse(81), APIRobotEMailAddress: new EMailAddress( "Users API Unit Tests", SimpleEMailAddress.Parse("*****@*****.**") ), AdminOrganizationId: Organization_Id.Parse("admins"), SMTPClient: new NullMailer(), SMSClient: new NullSMSAPI(), LoggingPath: folder, Autostart: true );; nullMailer = usersAPI.SMTPClient as NullMailer; nullSMSClient = usersAPI.SMSClient as NullSMSAPI; usersAPI.AddOrganization(new Organization( Organization_Id.Parse("admins"), I18NString.Create(Languages.en, "Admins") )).Wait(); #region / //_HTTPServer.AddMethodCallback(HTTPHostname.Any, // HTTPMethod.GET, // HTTPPath.Root, // HTTPDelegate: Request => Task.FromResult( // new HTTPResponse.Builder(Request) { // HTTPStatusCode = HTTPStatusCode.OK, // Server = "Test Server", // Date = DateTime.UtcNow, // AccessControlAllowOrigin = "*", // AccessControlAllowMethods = "GET", // AccessControlAllowHeaders = "Content-Type, Accept, Authorization", // ContentType = HTTPContentType.TEXT_UTF8, // Content = "Hello World!".ToUTF8Bytes(), // Connection = "close" // }.AsImmutable)); #endregion }
public static Boolean TryParseJSON(JObject JSONObject, Func <Organization_Id, Organization> OrganizationProvider, out NotificationMessage NotificationMessage, out String ErrorResponse, NotificationMessage_Id?NotificationMessageIdURL = null) { if (OrganizationProvider == null) { NotificationMessage = null; ErrorResponse = "The given owner/organization provider must not be null!"; return(false); } try { NotificationMessage = null; #region Parse NotificationMessageId [optional] // Verify that a given NotificationMessage identification // is at least valid. if (JSONObject.ParseOptionalStruct("@id", "NotificationMessage identification", NotificationMessage_Id.TryParse, out NotificationMessage_Id? NotificationMessageIdBody, out ErrorResponse)) { if (ErrorResponse != null) { return(false); } } if (!NotificationMessageIdURL.HasValue && !NotificationMessageIdBody.HasValue) { ErrorResponse = "The NotificationMessage identification is missing!"; return(false); } if (NotificationMessageIdURL.HasValue && NotificationMessageIdBody.HasValue && NotificationMessageIdURL.Value != NotificationMessageIdBody.Value) { ErrorResponse = "The optional NotificationMessage identification given within the JSON body does not match the one given in the URI!"; return(false); } #endregion #region Parse Context [mandatory] if (!JSONObject.ParseMandatory("@context", "JSON-LinkedData context information", JSONLDContext.TryParse, out JSONLDContext Context, out ErrorResponse)) { ErrorResponse = @"The JSON-LD ""@context"" information is missing!"; return(false); } if (Context != DefaultJSONLDContext) { ErrorResponse = @"The given JSON-LD ""@context"" information '" + Context + "' is not supported!"; return(false); } #endregion #region Parse Timestamp [mandatory] if (!JSONObject.ParseMandatory("timestamp", "timestamp", out DateTime Timestamp, out ErrorResponse)) { return(false); } #endregion #region Parse Type [mandatory] if (!JSONObject.ParseMandatory("type", "notification message type", NotificationMessageType.TryParse, out NotificationMessageType Type, out ErrorResponse)) { return(false); } #endregion #region Parse Data [mandatory] if (!JSONObject.ParseMandatory("name", "NotificationMessagename", out JObject Data, out ErrorResponse)) { return(false); } #endregion #region Parse Owners [mandatory] if (!JSONObject.ParseMandatory("ownerIds", "owner identifications", out JArray OwnersJSON, out ErrorResponse)) { return(false); } var OwnerIds = new List <Organization_Id>(); foreach (var ownerJSON in OwnersJSON) { if (!Organization_Id.TryParse(ownerJSON.Value <String>(), out Organization_Id OwnerId)) { ErrorResponse = "Invalid owner identification '" + OwnerId + "'!"; return(false); } OwnerIds.Add(OwnerId); } if (OwnerIds.Count == 0) { ErrorResponse = "Invalid owner identifications!"; return(false); } #endregion #region Parse Signatures [optional] if (JSONObject.ParseOptional("signatures", "Signatures", out JArray Signatures, out ErrorResponse)) { if (ErrorResponse != null) { return(false); } } #endregion #region Parse CryptoHash [optional] var CryptoHash = JSONObject.GetOptional("cryptoHash"); #endregion NotificationMessage = new NotificationMessage(NotificationMessageIdBody ?? NotificationMessageIdURL.Value, Timestamp, Type, Data, OwnerIds, null); ErrorResponse = null; return(true); } catch (Exception e) { ErrorResponse = e.Message; NotificationMessage = null; return(false); } }
public static IEnumerable <TelegramGroupNotification> GetTelegramGroupNotifications(this UsersAPI UsersAPI, Organization_Id OrganizationId, params NotificationMessageType[] NotificationMessageTypes) => UsersAPI.GetNotificationsOf <TelegramGroupNotification>(OrganizationId, NotificationMessageTypes);
public async Task UsersAPI_Test01() { Assert.AreEqual(0, usersAPI.Users.Count()); Assert.AreEqual(2, usersAPI.Organizations.Count()); Assert.IsTrue(usersAPI.OrganizationExists(Organization_Id.Parse("NoOwner"))); Assert.IsTrue(usersAPI.OrganizationExists(Organization_Id.Parse("admins"))); var result01a = await usersAPI.AddUser(new User( User_Id.Parse("apiAdmin01"), "API Admin 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 111111") ), User2OrganizationEdgeLabel.IsAdmin, usersAPI.GetOrganization(Organization_Id.Parse("admins"))); Assert.IsNotNull(result01a); Assert.IsTrue(result01a.IsSuccess); Assert.AreEqual(1, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result01a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result01a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result01b = await usersAPI.AddUser(new User( User_Id.Parse("apiAdmin02"), "API Admin 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsAdmin, usersAPI.GetOrganization(Organization_Id.Parse("admins"))); Assert.IsNotNull(result01b); Assert.IsTrue(result01b.IsSuccess); Assert.AreEqual(2, usersAPI.Users.Count()); var result01c = await usersAPI.AddUser(new User( User_Id.Parse("apiMember01"), "API Member 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 222222") ), User2OrganizationEdgeLabel.IsMember, usersAPI.GetOrganization(Organization_Id.Parse("admins"))); Assert.IsNotNull(result01c); Assert.IsTrue(result01c.IsSuccess); Assert.AreEqual(3, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result01c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result01c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result01d = await usersAPI.AddUser(new User( User_Id.Parse("apiMember02"), "API Member 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsMember, usersAPI.GetOrganization(Organization_Id.Parse("admins"))); Assert.IsNotNull(result01d); Assert.IsTrue(result01d.IsSuccess); Assert.AreEqual(4, usersAPI.Users.Count()); #region Setup FirstOrg var result03 = await usersAPI.AddOrganization(new Organization( Organization_Id.Parse("firstOrg"), I18NString.Create(Languages.en, "First Organization") ), ParentOrganization : result01a.Organization); Assert.AreEqual(3, usersAPI.Organizations.Count()); Assert.IsTrue(usersAPI.OrganizationExists(Organization_Id.Parse("firstOrg"))); var IsChildOrganizationEdge1 = result03.Organization.Organization2OrganizationOutEdges.FirstOrDefault(); Assert.IsNotNull(IsChildOrganizationEdge1); Assert.AreEqual(Organization_Id.Parse("firstOrg"), IsChildOrganizationEdge1.Source.Id); Assert.AreEqual(usersAPI.AdminOrganizationId, IsChildOrganizationEdge1.Target.Id); var result04a = await usersAPI.AddUser(new User( User_Id.Parse("firstOrgAdmin01"), "First Org Admin 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 333333") ), User2OrganizationEdgeLabel.IsAdmin, result03.Organization); Assert.IsNotNull(result04a); Assert.IsTrue(result04a.IsSuccess); Assert.AreEqual(5, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result04a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result04a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result04b = await usersAPI.AddUser(new User( User_Id.Parse("firstOrgAdmin02"), "First Org Admin 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsAdmin, result03.Organization); Assert.IsNotNull(result04b); Assert.IsTrue(result04b.IsSuccess); Assert.AreEqual(6, usersAPI.Users.Count()); var result04c = await usersAPI.AddUser(new User( User_Id.Parse("firstOrgMember01"), "First Org Member 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 444444") ), User2OrganizationEdgeLabel.IsMember, result03.Organization); Assert.IsNotNull(result04c); Assert.IsTrue(result04c.IsSuccess); Assert.AreEqual(7, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result04c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result04c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result04d = await usersAPI.AddUser(new User( User_Id.Parse("firstOrgMember02"), "First Org Member 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsMember, result03.Organization); Assert.IsNotNull(result04d); Assert.IsTrue(result04d.IsSuccess); Assert.AreEqual(8, usersAPI.Users.Count()); #endregion #region Setup SecondOrg var result13 = await usersAPI.AddOrganization(new Organization( Organization_Id.Parse("secondOrg"), I18NString.Create(Languages.en, "Second Organization") ), ParentOrganization : result03.Organization); Assert.AreEqual(4, usersAPI.Organizations.Count()); Assert.IsTrue(usersAPI.OrganizationExists(Organization_Id.Parse("secondOrg"))); var IsChildOrganizationEdge2 = result13.Organization.Organization2OrganizationOutEdges.FirstOrDefault(); Assert.IsNotNull(IsChildOrganizationEdge2); Assert.AreEqual(Organization_Id.Parse("secondOrg"), IsChildOrganizationEdge2.Source.Id); Assert.AreEqual(Organization_Id.Parse("firstOrg"), IsChildOrganizationEdge2.Target.Id); var result14a = await usersAPI.AddUser(new User( User_Id.Parse("secondOrgAdmin01"), "Second Org Admin 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 555555") ), User2OrganizationEdgeLabel.IsAdmin, result13.Organization); Assert.IsNotNull(result14a); Assert.IsTrue(result14a.IsSuccess); Assert.AreEqual(9, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result14a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result14a.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result14b = await usersAPI.AddUser(new User( User_Id.Parse("secondOrgAdmin02"), "Second Org Admin 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsAdmin, result13.Organization); Assert.IsNotNull(result14b); Assert.IsTrue(result14b.IsSuccess); Assert.AreEqual(10, usersAPI.Users.Count()); var result14c = await usersAPI.AddUser(new User( User_Id.Parse("secondOrgMember01"), "Second Org Member 01", SimpleEMailAddress.Parse("*****@*****.**"), MobilePhone : PhoneNumber.Parse("+49 170 666666") ), User2OrganizationEdgeLabel.IsMember, result13.Organization); Assert.IsNotNull(result14c); Assert.IsTrue(result14c.IsSuccess); Assert.AreEqual(11, usersAPI.Users.Count()); await usersAPI.AddEMailNotification(result14c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); await usersAPI.AddSMSNotification(result14c.User, new NotificationMessageType[] { UsersAPI.addUser_MessageType, UsersAPI.updateUser_MessageType, UsersAPI.deleteUser_MessageType, UsersAPI.addUserToOrganization_MessageType, UsersAPI.removeUserFromOrganization_MessageType, UsersAPI.addOrganization_MessageType, UsersAPI.updateOrganization_MessageType, UsersAPI.deleteOrganization_MessageType, UsersAPI.linkOrganizations_MessageType, UsersAPI.unlinkOrganizations_MessageType }); var result14d = await usersAPI.AddUser(new User( User_Id.Parse("secondOrgMember02"), "Second Org Member 02", SimpleEMailAddress.Parse("*****@*****.**") ), User2OrganizationEdgeLabel.IsMember, result13.Organization); Assert.IsNotNull(result14d); Assert.IsTrue(result14d.IsSuccess); Assert.AreEqual(12, usersAPI.Users.Count()); #endregion Assert.IsTrue(nullMailer.EMails.Any(), "Not a single notification e-mail was sent!"); var maxEMailSubjectLength = nullMailer.EMails.Max(emailEnvelope => emailEnvelope.Mail.Subject.Length); var allEMailNotifications = nullMailer.EMails.Select(emailEnvelope => emailEnvelope.Mail.Subject.PadRight(maxEMailSubjectLength + 2) + " => " + emailEnvelope.RcptTo.Select(email => email.Address).OrderBy(_ => _).AggregateWith(", ")).ToArray(); var eMailOverview = allEMailNotifications.AggregateWith(Environment.NewLine); // User 'API Admin 02' was successfully created. => [email protected] // User 'API Admin 02' was added to organization 'Admins' as admin. => [email protected] // User 'API Member 01' was successfully created. => [email protected] // User 'API Member 01' was added to organization 'Admins' as member. => [email protected] // User 'API Member 02' was successfully created. => [email protected], [email protected] // User 'API Member 02' was added to organization 'Admins' as member. => [email protected], [email protected] // // Organization 'First Organization' was successfully created. => [email protected], [email protected] // Organization 'First Organization' was linked to organization 'Admins'. => [email protected], [email protected] // User 'First Org Admin 01' was successfully created. => [email protected], [email protected] // User 'First Org Admin 01' was added to organization 'First Organization' as admin. => [email protected], [email protected] // User 'First Org Admin 02' was successfully created. => [email protected], [email protected], [email protected] // User 'First Org Admin 02' was added to organization 'First Organization' as admin. => [email protected], [email protected], [email protected] // User 'First Org Member 01' was successfully created. => [email protected], [email protected], [email protected] // User 'First Org Member 01' was added to organization 'First Organization' as member. => [email protected], [email protected], [email protected] // User 'First Org Member 02' was successfully created. => [email protected], [email protected], [email protected], [email protected] // User 'First Org Member 02' was added to organization 'First Organization' as member. => [email protected], [email protected], [email protected], [email protected] // // Organization 'Second Organization' was successfully created. => [email protected], [email protected], [email protected], [email protected] // Organization 'Second Organization' was linked to organization 'First Organization'. => [email protected], [email protected], [email protected], [email protected] // User 'Second Org Admin 01' was successfully created. => [email protected], [email protected], [email protected], [email protected] // User 'Second Org Admin 01' was added to organization 'Second Organization' as admin. => [email protected], [email protected], [email protected], [email protected] // User 'Second Org Admin 02' was successfully created. => [email protected], [email protected], [email protected], [email protected], [email protected] // User 'Second Org Admin 02' was added to organization 'Second Organization' as admin. => [email protected], [email protected], [email protected], [email protected], [email protected] // User 'Second Org Member 01' was successfully created. => [email protected], [email protected], [email protected], [email protected], [email protected] // User 'Second Org Member 01' was added to organization 'Second Organization' as member. => [email protected], [email protected], [email protected], [email protected], [email protected] // User 'Second Org Member 02' was successfully created. => [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] // User 'Second Org Member 02' was added to organization 'Second Organization' as member. => [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] Assert.IsTrue(nullSMSClient.SMSs.Any(), "Not a single notification SMS was sent!"); var maxSMSMessageLength = nullSMSClient.SMSs.Max(sms => sms.Text.Length); var allSMSNotifications = nullSMSClient.SMSs.Select(sms => sms.Text.PadRight(maxSMSMessageLength + 2) + " => " + sms.Receivers.OrderBy(_ => _).AggregateWith(", ")).ToArray(); var smsOverview = allSMSNotifications.AggregateWith(Environment.NewLine); // |-- 160 characters --------------------------------------------------------------------------------------------------------------------------------------------| // User 'API Admin 02' was successfully added. https://example.cloud/users/apiAdmin02 => +49 170 111111 // User 'API Admin 02' was added to organization 'Admins' as admin. => +49 170 111111 // User 'API Member 01' was successfully added. https://example.cloud/users/apiMember01 => +49 170 111111 // User 'API Member 01' was added to organization 'Admins' as member. => +49 170 111111 // User 'API Member 02' was successfully added. https://example.cloud/users/apiMember02 => +49 170 111111, +49 170 222222 // User 'API Member 02' was added to organization 'Admins' as member. => +49 170 111111, +49 170 222222 // // Organization 'First Organization' was successfully created. https://example.cloud/organizations/firstOrg => +49 170 111111, +49 170 222222 // Organization 'First Organization' was linked to organization 'Admins'. => +49 170 111111, +49 170 222222 // User 'First Org Admin 01' was successfully added. https://example.cloud/users/firstOrgAdmin01 => +49 170 111111, +49 170 222222 // User 'First Org Admin 01' was added to organization 'First Organization' as admin. => +49 170 111111, +49 170 222222 // User 'First Org Admin 02' was successfully added. https://example.cloud/users/firstOrgAdmin02 => +49 170 111111, +49 170 222222, +49 170 333333 // User 'First Org Admin 02' was added to organization 'First Organization' as admin. => +49 170 111111, +49 170 222222, +49 170 333333 // User 'First Org Member 01' was successfully added. https://example.cloud/users/firstOrgMember01 => +49 170 111111, +49 170 222222, +49 170 333333 // User 'First Org Member 01' was added to organization 'First Organization' as member. => +49 170 111111, +49 170 222222, +49 170 333333 // User 'First Org Member 02' was successfully added. https://example.cloud/users/firstOrgMember02 => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // User 'First Org Member 02' was added to organization 'First Organization' as member. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // // Organization 'Second Organization' was successfully created. https://example.cloud/organizations/secondOrg => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // Organization 'Second Organization' was linked to organization 'First Organization'. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // User 'Second Org Admin 01' was successfully added. https://example.cloud/users/secondOrgAdmin01 => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // User 'Second Org Admin 01' was added to organization 'Second Organization' as admin. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444 // User 'Second Org Admin 02' was successfully added. https://example.cloud/users/secondOrgAdmin02 => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555 // User 'Second Org Admin 02' was added to organization 'Second Organization' as admin. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555 // User 'Second Org Member 01' was successfully added. https://example.cloud/users/secondOrgMember01 => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555 // User 'Second Org Member 01' was added to organization 'Second Organization' as member. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555 // User 'Second Org Member 02' was successfully added. https://example.cloud/users/secondOrgMember02 => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555, +49 170 666666 // User 'Second Org Member 02' was added to organization 'Second Organization' as member. => +49 170 111111, +49 170 222222, +49 170 333333, +49 170 444444, +49 170 555555, +49 170 666666 }