public void RequestAccessToken_WhenOKStatusCode_ShouldSetInstanceUrl() { MockHttpMessageHandler mockHandler = new MockHttpMessageHandler(); SFDCClient client = new SFDCClient(new HttpClient(mockHandler)); client.ClientId = "cliend_id"; client.ClientSecret = "client_secret"; client.Username = "******"; client.Password = "******"; client.ApiVersion = 45.0; string endpoint = "/services/oauth2/token"; string fakeAccessTokenResponse = "{\"access_token\":\"fake_access_token\"," + "\"instance_url\":\"https://www.fake_instance_url.com\"," + "\"id\":\"fake_id\"," + "\"token_type\":\"fake_token_type\"," + "\"issued_at\":\"fake_issued_at\"," + "\"signature\":\"fake_signature\"}"; mockHandler .When(endpoint) .Respond(HttpStatusCode.OK, "application/json", fakeAccessTokenResponse); client.RequestAccessToken().Wait(); string expected = "https://www.fake_instance_url.com"; string actual = client.InstanceUrl; // ensure client.InstanceUrl has been set to the expected value Assert.That(expected, Is.EqualTo(actual)); }
public void InjectEvent_NullEventFields_ShouldThrowInvalidPlatformEventException() { MockHttpMessageHandler mockHandler = new MockHttpMessageHandler(); SFDCClient client = new SFDCClient(new HttpClient(mockHandler)); client.ClientId = "cliend_id"; client.ClientSecret = "client_secret"; client.Username = "******"; client.Password = "******"; client.ApiVersion = 10; string endpoint = "/services/oauth2/token"; string fakeAccessTokenResponse = "{\"access_token\":\"fake_access_token\"," + "\"instance_url\":\"https://www.fake_instance_url.com\"," + "\"id\":\"fake_id\"," + "\"token_type\":\"fake_token_type\"," + "\"issued_at\":\"fake_issued_at\"," + "\"signature\":\"fake_signature\"}"; TestEvent evt = new TestEvent { ApiName = "Test_Event_Api_Name__e" // should set Fields to avoid exception }; mockHandler .When(endpoint) .Respond(HttpStatusCode.OK, "application/json", fakeAccessTokenResponse); Assert.That(() => { client.RequestAccessToken().Wait(); client.InjectEvent(evt).Wait(); }, Throws .TypeOf <AggregateException>() .With.InnerException .TypeOf <InvalidPlatformEventException>()); }
public void InjectEvent_NullApiVersion_ShouldThrowInsufficientEventInjectionException() { MockHttpMessageHandler mockHandler = new MockHttpMessageHandler(); SFDCClient client = new SFDCClient(new HttpClient(mockHandler)); client.ClientId = "cliend_id"; client.ClientSecret = "client_secret"; client.Username = "******"; client.Password = "******"; // should set client.ApiVersion to avoid exception string endpoint = "/services/oauth2/token"; TestEvent evt = new TestEvent { ApiName = "Test_Event_Api_Name__e", Fields = new TestEventFields { StringTestField = "TestFieldValue" } }; // send empty response (not relevant to test) mockHandler .When(endpoint) .Respond(HttpStatusCode.OK, "application/json", "{}"); Assert.That(() => { client.RequestAccessToken().Wait(); client.InjectEvent(evt).Wait(); }, Throws .TypeOf <AggregateException>() .With.InnerException .TypeOf <InsufficientEventInjectionException>()); }
public void InjectEvent_NoPriorCallToRequestAccessToken_ShouldThrowInsufficientEventInjectionException() { SFDCClient client = new SFDCClient(new HttpClient()); client.ApiVersion = 43.0; TestEvent evt = new TestEvent { ApiName = "Test_Event_Api_Name__e", Fields = new TestEventFields { StringTestField = "TestFieldValue" } }; Assert.That(() => { /// should call client.RequestAccessToken().Wait() to avoid exception. client.InjectEvent(evt).Wait(); }, Throws .TypeOf <AggregateException>() .With.InnerException .TypeOf <InsufficientEventInjectionException>()); // props are null because they are set by RequestAccessToken Assert.That(client.AccessToken, Is.Null); Assert.That(client.InstanceUrl, Is.Null); }
public void ApiEndpoint_ApiVersionIsSet_ShouldBeSet() { SFDCClient client = new SFDCClient(new HttpClient()); client.ApiVersion = 42.3; Assert.That("/services/data/v42.3/", Is.EqualTo(client.ApiEndpoint)); client.ApiVersion = 15.0; Assert.That("/services/data/v15.0/", Is.EqualTo(client.ApiEndpoint)); }
/// <summary> /// Injects an event into Salesforce using /// the supplied CLI authentication and /// event arguments. /// </summary> public int Init(InjectOptions o) { _AuthArgs = CreateAuthArgs(o.AuthArgs); _EventArgs = CreateEventArgs(o.EventArgs); _Client = CreateClient(); try { dynamic evt = null; try { evt = EventCreator.CreateEvent( _EventArgs.EventClassName, _EventArgs.EventFieldsClassName, _EventArgs.EventFieldsPropValues); } catch (Exception e) when( e is UnknownPlatformEventException || e is UnknownPlatformEventFieldsException || e is InvalidCommandLineArgumentIndexException) { Console.WriteLine($"{e.GetType()}: {e.Message}"); } try { _Client.RequestAccessToken().Wait(); } catch (Exception e) when(e is InsufficientAccessTokenRequestException) { Console.WriteLine($"{e.GetType()}: {e.Message}"); } try { _Client.InjectEvent(evt).Wait(); } catch (Exception e) when( e is InsufficientEventInjectionException || e is InvalidPlatformEventException || e is EventInjectionUnsuccessfulException) { Console.WriteLine($"{e.GetType()}: {e.Message}"); } } catch (RuntimeBinderException e) { Console.WriteLine($"{e.GetType()}: No event was bounded to the dynamic type."); } return(0); }
/// <summary> /// Creates a new instance of `SFDCClient` /// using the authentication arguments in /// `_AuthArgs` to interact with Salesforce's /// REST API. /// </summary> private SFDCClient CreateClient() { SFDCClient client = new SFDCClient(new HttpClient()); client.ClientId = _AuthArgs.ClientId; client.ClientSecret = _AuthArgs.ClientSecret; client.Username = _AuthArgs.Username; client.Password = _AuthArgs.Password; client.ApiVersion = _AuthArgs.ApiVersion; return(client); }
public void RequestAccessToken_NullClientId_ShouldThrowInsufficientAccessTokenRequestException() { SFDCClient client = new SFDCClient(new HttpClient()); // should set client.ClientId to avoid exception. client.ClientSecret = "client_secret"; client.Username = "******"; client.Password = "******"; client.ApiVersion = 45.0; Assert.That(() => { client.RequestAccessToken().Wait(); }, Throws .TypeOf <AggregateException>() .With.InnerException .TypeOf <InsufficientAccessTokenRequestException>()); }
public void InjectEvent_UnsuccessfulInjection_ShouldThrowEventInjectionUnsuccessfulException() { MockHttpMessageHandler mockHandler = new MockHttpMessageHandler(); SFDCClient client = new SFDCClient(new HttpClient(mockHandler)); client.ClientId = "cliend_id"; client.ClientSecret = "client_secret"; client.Username = "******"; client.Password = "******"; client.ApiVersion = 10; string accessTokenEndpoint = "/services/oauth2/token"; string eventInjectionEndpoint = "/services/data/v10.0/sobjects/Test_Event_Api_Name__e"; string fakeAccessTokenResponse = "{\"access_token\":\"fake_access_token\"," + "\"instance_url\":\"https://www.fake_instance_url.com\"," + "\"id\":\"fake_id\"," + "\"token_type\":\"fake_token_type\"," + "\"issued_at\":\"fake_issued_at\"," + "\"signature\":\"fake_signature\"}"; string fakeEventInjectionResponse = "{\"id\":\"fake_id\"," + "\"success\":false," + // indicates an unsuccessful injection "\"errors\":[]}"; TestEvent evt = new TestEvent { ApiName = "Test_Event_Api_Name__e", Fields = new TestEventFields { StringTestField = "TestFieldValue" } }; mockHandler .When(accessTokenEndpoint) .Respond(HttpStatusCode.OK, "application/json", fakeAccessTokenResponse); mockHandler .When(eventInjectionEndpoint) .Respond(HttpStatusCode.OK, "application/json", fakeEventInjectionResponse); Assert.That(() => { client.RequestAccessToken().Wait(); client.InjectEvent(evt).Wait(); }, Throws .TypeOf <AggregateException>() .With.InnerException .TypeOf <EventInjectionUnsuccessfulException>()); }