public void ConversationAddGetSpace2() { BrickStreetConnect brickStreetConnect = makeClient(); HttpStatusCode status; string statusMessage; // NB: space in name string aname = "First Name"; BrickStAPI.Connect.Attribute attr = brickStreetConnect.GetCustomerAttribute(aname, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(attr); Assert.IsNotNull(attr.Name); Assert.AreEqual(aname, attr.Name); string cname = "generic Spently Test Store"; Conversation conv = brickStreetConnect.GetConversationByName(cname, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv); Assert.IsNotNull(conv.Id); Assert.AreEqual(cname, conv.Name); }
public void SenderDomainCRU() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; String statusMessage; SenderDomain s1 = new SenderDomain(); s1.Name = "example.com"; s1.SigningAlg = 0; s1.DefaultDomain = false; SenderDomain s2 = brickst.AddSenderDomain(s1, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(s2); Assert.IsTrue(s2.Id.HasValue); Assert.AreEqual(s2.Name, s1.Name); Assert.AreEqual(s2.SigningAlg, s1.SigningAlg); Assert.AreEqual(s2.DefaultDomain, s1.DefaultDomain); s2.Name = "example2.com"; SenderDomain s3 = brickst.UpdateSenderDomain(s2, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(s3); Assert.IsTrue(s3.Id.HasValue); Assert.AreEqual(s3.Id.Value, s2.Id.Value); Assert.AreEqual(s3.Name, s2.Name); Assert.AreEqual(s3.SigningAlg, s2.SigningAlg); Assert.AreEqual(s3.DefaultDomain, s2.DefaultDomain); }
public void ReadCampaignWithExpirationDate() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage; EventCampaign ec = brickst.GetEventCampaign(1021, out status, out statusMessage); Assert.AreEqual(1021, ec.Id); }
public BrickStreetConnect makeClient() { string apiBaseUrl = ConfigurationManager.AppSettings["BrickStreetApiHttps"]; string apiBaseUser = ConfigurationManager.AppSettings["BrickStreetApiUser"]; string apiBasePass = ConfigurationManager.AppSettings["BrickStreetApiPass"]; BrickStreetConnect c = new BrickStreetConnect(apiBaseUrl, apiBaseUser, apiBasePass); return(c); }
public void CampaignGetByName() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage; EventCampaign ecamp = brickst.GetEventCampaignByName("Receipt Store 1", out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(ecamp); }
public BrickStreetConnect makeClient() { string apiBaseUrl = ConfigurationManager.AppSettings["BrickStreetApiHttps"]; string apiBaseUser = ConfigurationManager.AppSettings["BrickStreetApiUser"]; string apiBasePass = ConfigurationManager.AppSettings["BrickStreetApiPass"]; string apiBaseDept = ConfigurationManager.AppSettings["BrickStreetApiDept"]; ConnectDepartmentID = long.Parse(apiBaseDept); BrickStreetConnect c = new BrickStreetConnect(apiBaseUrl, apiBaseUser, apiBasePass); return(c); }
public void ConversationAddGetSpace() { BrickStreetConnect brickStreetConnect = makeClient(); HttpStatusCode status; string statusMessage; // NB: space in name string cname = "TEST " + DateTime.Now.Ticks.ToString() + " TEST TEST"; Conversation conv = new Conversation { Name = cname, DepartmentID = ConnectDepartmentID }; Conversation dbConv = brickStreetConnect.AddConversation(conv, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(dbConv); Assert.IsNotNull(dbConv.Id); Assert.AreEqual(cname, dbConv.Name); // // test get methods // conv = brickStreetConnect.GetConversation((long)dbConv.Id, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv); Assert.IsNotNull(conv.Id); Assert.AreEqual(dbConv.Name, conv.Name); conv = brickStreetConnect.GetConversationByName(cname, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv); Assert.IsNotNull(conv.Id); Assert.AreEqual(dbConv.Name, conv.Name); }
public void SendersGetAll() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; String statusMessage; List <Sender> senders = brickst.GetSenders(out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(senders); foreach (Sender s in senders) { long id = s.Id.Value; Sender fetched = brickst.GetSender(id, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); } }
public void DepartmentGets() { BrickStreetConnect brickStreetConnect = makeClient(); HttpStatusCode status; string statusMessage; // // fetch all depts // List <Department> allDepts = brickStreetConnect.GetDepartments(out status, out statusMessage); Assert.IsTrue(status == HttpStatusCode.OK); Assert.IsNotNull(allDepts); Assert.IsTrue(allDepts.Count >= 1); // find default dept Department defaultDept = null; foreach (Department dept in allDepts) { if (dept.Name == "Default") { defaultDept = dept; break; } } Assert.IsNotNull(defaultDept); // // fetch individual depts and verify that they are the same // foreach (Department dept in allDepts) { Department fetchedDept = brickStreetConnect.GetDepartment(dept.Id.Value, out status, out statusMessage); Assert.IsTrue(status == HttpStatusCode.OK); Assert.IsNotNull(fetchedDept); Assert.IsTrue(fetchedDept.Id.Value == dept.Id.Value); Assert.IsTrue(fetchedDept.Name == dept.Name); // NOTE: GetDepartments only returns ID and Name fields // Assert.IsTrue(fetchedDept.ProfileId.Value == dept.ProfileId.Value); } }
public void SenderCRU() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; String statusMessage; Sender s1 = new Sender(); s1.Name = "My Test Sender"; s1.EmailAddress = "mytestsender"; s1.DepartmentID = ConnectDepartmentID; s1.DefaultSender = false; Sender s2 = brickst.AddSender(s1, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(s2); Assert.IsTrue(s2.Id.HasValue); Assert.AreEqual(s2.Name, s1.Name); Assert.AreEqual(s2.EmailAddress, s1.EmailAddress); Assert.AreEqual(s2.DepartmentID, s1.DepartmentID); Assert.AreEqual(s2.DefaultSender, s1.DefaultSender); s2.EmailAddress = "testsender"; Sender s3 = brickst.UpdateSender(s2, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(s3); Assert.IsTrue(s3.Id.HasValue); Assert.AreEqual(s3.Id.Value, s2.Id.Value); Assert.AreEqual(s3.Name, s2.Name); Assert.AreEqual(s3.EmailAddress, s2.EmailAddress); Assert.AreEqual(s3.DepartmentID, s2.DepartmentID); Assert.AreEqual(s3.DefaultSender, s2.DefaultSender); }
public void ConversationAddGetSenders() { BrickStreetConnect brickStreetConnect = makeClient(); HttpStatusCode status; string statusMessage; // get sender name and domain Sender defSender = null; SenderDomain defDomain = null; // // get default sender // List <Sender> senders = brickStreetConnect.GetSenders(out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(senders); foreach (Sender s in senders) { Sender fetched = brickStreetConnect.GetSender(s.Id.Value, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(fetched); Assert.IsTrue(fetched.DefaultSender.HasValue); if (fetched.DefaultSender.Value) { defSender = fetched; break; } } Assert.IsNotNull(defSender); // // get default sender domain // List <SenderDomain> domains = brickStreetConnect.GetSenderDomains(out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(domains); foreach (SenderDomain d in domains) { SenderDomain fetched = brickStreetConnect.GetSenderDomain(d.Id.Value, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(fetched); Assert.IsTrue(fetched.DefaultDomain.HasValue); if (fetched.DefaultDomain.Value) { defDomain = fetched; break; } } Assert.IsNotNull(defDomain); string cname = "TEST" + DateTime.Now.Ticks.ToString(); Conversation conv = new Conversation { Name = cname, DepartmentID = ConnectDepartmentID, SenderID = defSender.Id.Value, SenderDomain = defDomain.Id.Value }; Conversation dbConv = brickStreetConnect.AddConversation(conv, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(dbConv); Assert.IsNotNull(dbConv.Id); Assert.AreEqual(cname, dbConv.Name); Assert.AreEqual(dbConv.SenderID.Value, defSender.Id.Value); Assert.AreEqual(dbConv.SenderDomain.Value, defDomain.Id.Value); // // test get methods // conv = brickStreetConnect.GetConversation((long)dbConv.Id, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv); Assert.IsNotNull(conv.Id); Assert.AreEqual(dbConv.Name, conv.Name); Assert.AreEqual(dbConv.SenderID.Value, defSender.Id.Value); Assert.AreEqual(dbConv.SenderDomain.Value, defDomain.Id.Value); conv = brickStreetConnect.GetConversationByName(cname, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv); Assert.IsNotNull(conv.Id); Assert.AreEqual(dbConv.Name, conv.Name); Assert.AreEqual(dbConv.SenderID.Value, defSender.Id.Value); Assert.AreEqual(dbConv.SenderDomain.Value, defDomain.Id.Value); }
public void AddCustomerWithMultiaddress() { string preferenceName = ConfigurationManager.AppSettings["MultiaddressName"]; HttpStatusCode status; string statusMessage; BrickStreetConnect brickStreetConnect = makeClient(); BrickStAPI.Connect.Attribute attrDef = brickStreetConnect.GetCustomerAttribute(preferenceName, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(attrDef); string attrType = attrDef.Type; //create new customer Random r = new Random(); long val = r.Next(); if (val < 0) { val *= -1; } String custVal = "cmaeda+" + val + "@cmaeda.com"; Customer c = new Customer(); c.EmailAddress = custVal; c.AltCustomerId = custVal; c.AddressLine1 = "215 S Broadway 241"; c.City = "Salem"; c.State = "NH"; c.Country = "USA"; Customer c2 = brickStreetConnect.AddCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2, "Customer is null"); Assert.IsNotNull(c2.Id, "Customer ID is null"); Assert.AreEqual(c2.EmailAddress, custVal); Assert.AreEqual(c2.AltCustomerId, custVal); c = c2; // //add preference // CustomerAttribute attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c.GetAttribute(preferenceName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; //start with 1 value attr.PreferenceValues = new string[1]; attr.PreferenceValues[0] = "pval" + val; c.Attributes.Add(attr); } else { string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { //add a channel address attr = c.GetChannelAddress(preferenceName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; //start with 1 value attr.PreferenceValues = new string[1]; attr.PreferenceValues[0] = "pval" + val; c.ChannelAddresses.Add(attr); } else { string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } } else { Assert.IsTrue(false, "Unknown pref type " + attrType); } //save orig value string[] prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2, "Customer 2 is null"); //check saved data CustomerAttribute c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); c = c2; // //add a second pref value // //new random value val = r.Next(); if (val < 0) { val *= -1; } if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c.GetAttribute(preferenceName); Assert.IsNotNull(attr); //add a value string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { //add a channel attr = c.GetChannelAddress(preferenceName); Assert.IsNotNull(attr); string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } else { Assert.IsTrue(false, "Unknown pref type " + attrType); } prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); Assert.IsNotNull(c2, "Customer 2 is null"); //check saved data c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); c = c2; // //remove a preference // if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(attr); //remove first value string[] oldVals = attr.PreferenceValues; string[] newVals1 = new string[oldVals.Length - 1]; Array.Copy(oldVals, 1, newVals1, 0, newVals1.Length); attr.PreferenceValues = newVals1; prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); Assert.AreNotEqual(c2, "Customer 2 is null"); //check saved data c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); }
public void AddCustomerWithAttribute() { String attributeName = ConfigurationManager.AppSettings["AttrName"];//this will be probably fetched from app.config String attributeValue = ConfigurationManager.AppSettings["AttrValue"]; HttpStatusCode status; string statusMessage; BrickStreetConnect brickStreetConnect = makeClient(); var attrDef = brickStreetConnect.GetCustomerAttribute(attributeName, out status, out statusMessage); Assert.AreNotEqual(attrDef, "Attribute Not Found"); //create new customer Random r = new Random(); long val = r.Next(); if (val < 0) { val *= -1; } String custVal = "cmaeda" + val + "@cmaeda.com"; Customer c = new Customer(); c.EmailAddress = custVal; c.AltCustomerId = custVal; c.AddressLine1 = "215 S Broadway 241"; c.City = "Salem"; c.State = "NH"; c.Country = "USA"; Customer c2 = brickStreetConnect.AddCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2); Assert.IsNotNull(c2.Id); Assert.AreEqual(c2.EmailAddress, custVal); Assert.AreEqual(c2.AltCustomerId, custVal); CustomerAttribute attr = c2.GetAttribute(attributeName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; attr.Value = attributeValue; c2.Attributes.Add(attr); } else { attr.Value = attributeValue; } Customer c3 = brickStreetConnect.UpdateCustomer(c2, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c3, "Customer 3 is null"); CustomerAttribute c3attr = c3.GetAttribute(attributeName); Assert.IsNotNull(c3attr); Assert.AreEqual(c3attr.Value, attributeValue); }
public void EventReceiptTest() { BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage = null; // // verify that conversation exists // // CONV NAME: "TEST ERECEIPT CONVERSATION" // // SPENTLY: SHOULD CREATE A CONVERSATION OBJECT FOR EACH SPENTLY ACCOUNT Conversation conv = brickst.GetConversationByName("TEST ERECEIPT CONVERSATION", out status, out statusMessage); if (status == HttpStatusCode.NotFound) { // conversation not found; create it Assert.IsNull(conv, "Expected null conversation"); conv = new Conversation(); conv.Name = "TEST ERECEIPT CONVERSATION"; conv.DepartmentID = ConnectDepartmentID; Conversation conv2 = brickst.AddConversation(conv, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv2); Assert.IsNotNull(conv2.Id); Assert.AreEqual(conv.Name, conv2.Name); conv = conv2; } Assert.IsNotNull(conv); // // create new campaign // string campaignName = "TEST ERECEIPT " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); EventMaster eventMaster = new EventMaster() { Name = campaignName, IncludeXML = true }; // NO EVENT PARAMS EventCampaign camp = new EventCampaign() { Name = campaignName, Type = Campaign.EVENT_CAMPAIGN, ConversationID = conv.Id, DepartmentID = ConnectDepartmentID, Event = eventMaster }; EventCampaign savedCamp = brickst.AddEventCampaign(camp, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(savedCamp); Assert.IsNotNull(savedCamp.Id); Assert.AreEqual(ConnectDepartmentID, savedCamp.DepartmentID); camp = savedCamp; // // create content // CampaignContent cont = new CampaignContent() { Name = campaignName + " CONTENT", Type = CampaignContent.TYPE_XSL, Subject = "TEST SUBJ LINE FOR " + campaignName, // // NOTE: THIS URL SHOULD BE THE URL OF THE RECEIPT TEMPLATE XSL !!! /// HtmlContentURL = "http://content.brickst.net/eNotify/spently/eReceipt/spently-receipt2.xsl", CampaignID = (long)camp.Id }; CampaignContent cont2 = brickst.AddCampaignContent(cont, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR SAVING CONTENT: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(cont2); Assert.IsNotNull(cont2.Id); cont = cont2; // // create message interaction to use the content // CampaignInteraction inter = new CampaignInteraction() { Name = "Test Interaction 1", Type = CampaignInteraction.TYPE_MAIN_MESSAGE, CampaignID = (long)camp.Id, ContentID = (long)cont.Id, SegmentID = 1 }; CampaignInteraction inter2 = brickst.AddMessage(inter, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(inter2); Assert.IsNotNull(inter2.Id); inter = inter2; // // Prepare to Launch the Interaction // RolloutAction raction = new RolloutAction() { Action = RolloutAction.ACTION_PREPARE_LAUNCH, EffectiveDate = DateTime.Now.ToUniversalTime() }; RolloutActionResponse raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 1: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); raction = new RolloutAction() { Action = RolloutAction.ACTION_LAUNCH }; raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 2: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); // // event campaign is active; create a customer and submit events // string altCustId = "TEST" + DateTime.Now.Ticks.ToString(); string email = altCustId + "@cmaeda.com"; Customer cust = new Customer { AltCustomerId = altCustId, StatusCode = 1, EmailAddress = email, FirstName = "Test", LastName = "Testman" }; Customer dbCust = brickst.AddCustomer(cust, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbCust); Assert.IsNotNull(dbCust.Id); Assert.AreEqual(cust.AltCustomerId, dbCust.AltCustomerId); Assert.AreEqual(cust.EmailAddress, dbCust.EmailAddress); Assert.AreEqual(cust.LastName, dbCust.LastName); Assert.AreEqual(cust.FirstName, dbCust.FirstName); cust = dbCust; // // have customer, submit event // StringBuilder bld = new StringBuilder(); bld.Append("<purchase>"); bld.Append("<customer_name>"); bld.Append(cust.FirstName).Append(" ").Append(cust.LastName); bld.Append("</customer_name>"); bld.Append("<line_items>"); // LINE ITEM... bld.Append("<item>"); bld.Append("<item_name>Hat</item_name>"); bld.Append("<item_quantity>1</item_quantity>"); bld.Append("<item_price>9.95</item_price>"); bld.Append("</item>"); // LINE ITEM... bld.Append("<item>"); bld.Append("<item_name>Shoes</item_name>"); bld.Append("<item_quantity>1</item_quantity>"); bld.Append("<item_price>19.95</item_price>"); bld.Append("</item>"); bld.Append("</line_items>"); bld.Append("</purchase>"); string xml = bld.ToString(); Event tstEvent = new Event { EventName = campaignName, CustomerId = (long)cust.Id, Xml = xml, Subscribe = true }; Event dbEvent = brickst.AddEvent(tstEvent, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbEvent); Assert.IsNotNull(dbEvent.Id); Assert.AreEqual(tstEvent.EventName, dbEvent.EventName); Assert.AreEqual(tstEvent.CustomerId, dbEvent.CustomerId); Assert.AreEqual("1", dbEvent.Status); Console.WriteLine("SUBMITTED EVENT " + dbEvent.Id); }
public void CampaignEventTriggeredForReceipt() { BrickStreetConnect brickst = makeClient(); // // verify that conversation exists // // CONV NAME: "TEST ERECEIPT CONVERSATION" // // SPENTLY: SHOULD CREATE A CONVERSATION OBJECT FOR EACH SPENTLY ACCOUNT HttpStatusCode status; string statusMessage = null; Conversation conv = brickst.GetConversationByName("TEST ERECEIPT CONVERSATION", out status, out statusMessage); if (status == HttpStatusCode.NotFound) { // conversation not found; create it Assert.IsNull(conv, "Expected null conversation"); conv = new Conversation(); conv.Name = "TEST ERECEIPT CONVERSATION"; conv.DepartmentID = ConnectDepartmentID; Conversation conv2 = brickst.AddConversation(conv, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(conv2); conv = conv2; } Assert.IsNotNull(conv); // // create new campaign // string campaignName = "TEST ERECEIPT " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); EventMaster eventMaster = new EventMaster() { Name = campaignName, IncludeXML = true }; // // create event params // EventParameterMaster evParam; evParam = new EventParameterMaster() { Name = "shopName", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); evParam = new EventParameterMaster() { Name = "shopAddress", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); evParam = new EventParameterMaster() { Name = "shopPhone", DataType = EventParameterMaster.TYPE_STRING }; eventMaster.Parameters.Add(evParam); EventCampaign camp = new EventCampaign() { Name = campaignName, Type = Campaign.EVENT_CAMPAIGN, ConversationID = conv.Id, DepartmentID = ConnectDepartmentID, Event = eventMaster }; EventCampaign savedCamp = brickst.AddEventCampaign(camp, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(savedCamp); Assert.IsNotNull(savedCamp.Id); Assert.AreEqual(ConnectDepartmentID, savedCamp.DepartmentID); camp = savedCamp; // // create content // CampaignContent cont = new CampaignContent() { Name = campaignName + " CONTENT", Type = CampaignContent.TYPE_XSL, Subject = "TEST SUBJ LINE FOR " + campaignName, // // NOTE: THIS URL SHOULD BE THE URL OF THE RECEIPT TEMPLATE XSL !!! /// //HtmlContentURL = "http://content.brickst.net/eNotify/spently/eReceipt/spently-receipt2.xsl", HtmlContentURL = "http://www.geocities.jp/bssjapantest01/ereceipt/proj1.xsl", CampaignID = (long)camp.Id }; CampaignContent cont2 = brickst.AddCampaignContent(cont, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR SAVING CONTENT: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(cont2); Assert.IsNotNull(cont2.Id); cont = cont2; // // create message interaction to use the content // CampaignInteraction inter = new CampaignInteraction() { Name = "Test Interaction 1", Type = CampaignInteraction.TYPE_MAIN_MESSAGE, CampaignID = (long)camp.Id, ContentID = (long)cont.Id, SegmentID = 1 }; CampaignInteraction inter2 = brickst.AddMessage(inter, out status, out statusMessage); Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(inter2); Assert.IsNotNull(inter2.Id); inter = inter2; // // Prepare to Launch the Interaction // RolloutAction raction = new RolloutAction() { Action = RolloutAction.ACTION_PREPARE_LAUNCH, EffectiveDate = DateTime.Now.ToUniversalTime() }; RolloutActionResponse raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 1: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); raction = new RolloutAction() { Action = RolloutAction.ACTION_LAUNCH }; raresp = brickst.DoRolloutAction((long)camp.Id, (long)inter.Id, raction, out status, out statusMessage); if (statusMessage != null) { Console.WriteLine("ERROR ROLLOUT ACTION 2: " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNotNull(raresp); Assert.AreEqual(RolloutActionResponse.STATUS_OK, raresp.Status); }
public void ExistingEventCampaign() { // //Test Parameters // string altCustId = ConfigurationManager.AppSettings["AltCustId"]; string eventName = ConfigurationManager.AppSettings["EventName"]; string tokenName = ConfigurationManager.AppSettings["TokenName"]; string tokenValue = ConfigurationManager.AppSettings["TokenValue"]; // BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage; string timecode = DateTime.Now.ToLongTimeString(); Customer customer = brickst.GetCustomerByAltId(altCustId, out status, out statusMessage); if (customer == null) { string randomEmail = "user" + timecode + "@example.com"; customer = new Customer(); customer.EmailAddress = randomEmail; customer.AltCustomerId = altCustId; Customer cust2 = brickst.AddCustomer(customer, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); throw new Exception("null customer received from add customer"); } } long custId = Convert.ToInt32(customer.Id); if (!string.IsNullOrEmpty(tokenName) && !string.IsNullOrEmpty(tokenValue)) { //fetch attribute metadata BrickStAPI.Connect.Attribute attrDef = brickst.GetCustomerAttribute(tokenName, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } string attrType = attrDef.Type; bool doupdate = false; CustomerAttribute attr = customer.GetChannelAddress(tokenName); if (string.Compare("attribute", attrType, StringComparison.OrdinalIgnoreCase) == 0) { if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; attr.Value = tokenValue; customer.Attributes.Add(attr); doupdate = true; } else { // update if new if (!tokenValue.Equals(attr.Value)) { attr.Value = tokenValue; doupdate = true; } } } else if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; // start with 1 value attr.PreferenceValues = new String[1]; attr.PreferenceValues[0] = tokenValue; customer.ChannelAddresses.Add(attr); doupdate = true; } else { // existing preference record // add the token value if it is not already there // the push channel code will automatically remove invalid device tokens String[] vals = attr.PreferenceValues; bool valuefound = false; for (int i = 0; i < vals.Length; i++) { String val = vals[i]; if (tokenValue.Equals(val)) { valuefound = true; break; } } if (!valuefound) { String[] newVals = new String[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = tokenValue; attr.PreferenceValues = newVals; doupdate = true; } } } // save updated customer record if necessary if (doupdate) { Customer custSave2 = brickst.UpdateCustomer(customer, out status, out statusMessage); if (custSave2 == null) { throw new Exception("null customer received from updateCustomer"); } customer = custSave2; } } // //create an event record // BrickStreetAPI.Connect.Event eventObj = new BrickStreetAPI.Connect.Event(); eventObj.EventName = eventName; eventObj.CustomerId = custId; eventObj.Subscribe = true; eventObj.Parameters = new List <EventParameter>(); DateTime now = new DateTime(); //event parameter: Message EventParameter ep1 = new EventParameter(); ep1.ParameterName = "Message"; ep1.ParameterValue = "Test at " + now.ToString(); ep1.Encrypted = false; eventObj.Parameters.Add(ep1); //event parameter:Badge EventParameter ep2 = new EventParameter(); ep2.ParameterName = "Badge"; ep2.ParameterValue = "42"; ep2.Encrypted = false; eventObj.Parameters.Add(ep2); //event parameter: AlertID EventParameter ep3 = new EventParameter(); ep3.ParameterName = "AlertID"; ep3.ParameterValue = timecode; ep3.Encrypted = false; eventObj.Parameters.Add(ep3); // //submit event to connect // BrickStreetAPI.Connect.Event posted = brickst.AddEvent(eventObj, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); throw new Exception("addEvent returned null"); } long eventQueueId = Convert.ToInt32(posted.Id); long eventId = Convert.ToInt32(posted.EventId); Console.WriteLine("Posted Event;ID=" + eventQueueId + " for CustomerID=" + custId + " and Event ID=" + eventId); }
public void CustomerApiTest() { string altCustId = "TEST" + DateTime.Now.Ticks.ToString(); string email = altCustId + "@example.com"; Customer cust = new Customer { AltCustomerId = altCustId, StatusCode = 1, EmailAddress = email, FirstName = "Test", LastName = "Testman" }; HttpStatusCode status; string statusMessage; BrickStreetConnect brickStreetConnect = makeClient(); // // create new customer record // Customer dbCust = brickStreetConnect.AddCustomer(cust, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbCust); Assert.IsNotNull(dbCust.Id); Assert.AreEqual(cust.AltCustomerId, dbCust.AltCustomerId); Assert.AreEqual(cust.EmailAddress, dbCust.EmailAddress); Assert.AreEqual(cust.LastName, dbCust.LastName); Assert.AreEqual(cust.FirstName, dbCust.FirstName); // // now try the get methods on the new customer // Customer getCust = brickStreetConnect.GetCustomer((long)dbCust.Id, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); getCust = brickStreetConnect.GetCustomerByAltId(altCustId, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); getCust = brickStreetConnect.GetCustomerByEmail(email, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); // // update the customer // getCust.FirstName = "Testy"; getCust.LastName = "Testyman"; getCust.AddressLine1 = "123 Oak St"; getCust.City = "Oakland"; getCust.State = "CA"; dbCust = brickStreetConnect.UpdateCustomer(getCust, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(dbCust); Assert.IsNotNull(dbCust.Id); Assert.AreEqual((long)getCust.Id, (long)dbCust.Id); Assert.AreEqual(getCust.AltCustomerId, dbCust.AltCustomerId); Assert.AreEqual(getCust.EmailAddress, dbCust.EmailAddress); Assert.AreEqual(getCust.LastName, dbCust.LastName); Assert.AreEqual(getCust.FirstName, dbCust.FirstName); Assert.AreEqual(getCust.AddressLine1, dbCust.AddressLine1); Assert.AreEqual(getCust.City, dbCust.City); Assert.AreEqual(getCust.State, dbCust.State); // // dbCust is valid; recheck GET methods // getCust = brickStreetConnect.GetCustomer((long)dbCust.Id, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); getCust = brickStreetConnect.GetCustomerByAltId(altCustId, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); getCust = brickStreetConnect.GetCustomerByEmail(email, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.AreEqual(HttpStatusCode.OK, status); Assert.IsNull(statusMessage); Assert.IsNotNull(getCust); Assert.IsNotNull(getCust.Id); Assert.AreEqual(dbCust.AltCustomerId, getCust.AltCustomerId); Assert.AreEqual(dbCust.EmailAddress, getCust.EmailAddress); Assert.AreEqual(dbCust.LastName, getCust.LastName); Assert.AreEqual(dbCust.FirstName, getCust.FirstName); }