public void GetAuthToken_WhenGivenValidCredentials_ShouldGetAnAuthTokenFromSessionsEndpoint() { // ARRANGE var stubApi = Substitute.For <IAPI>(); var stubLazyApi = new Lazy <IAPI>(() => stubApi); var credentials = new Credentials() { BaseUrl = "https://some.bank.or.cu/api", Username = "******", Password = "******", Facility = "validFacility" }; var header = new Header() { ContentType = "application/json" }; var session = new Session() { UserName = credentials.Username, Password = credentials.Password, Authentication = "CCM" }; var sessionResponse = new SessionResponse() { AuthToken = "abc123" }; stubLazyApi.Value.URL = $"{credentials.BaseUrl}/v1/ccmservice/sessions"; stubLazyApi.Value.Post <Session, SessionResponse>(session).Returns(sessionResponse); var mockProxy = new RestProxy(stubLazyApi, credentials); // ACT var authToken = mockProxy.GetAuthToken(session); // ASSERT Assert.IsNotEmpty(authToken); Assert.AreEqual(sessionResponse.AuthToken, authToken); }