public void InvalidTokenTest() { OccupantInviteRequest occupantToInsert = new OccupantInviteRequest { Email = firebaseFixture.H1Email, InvitedByUserId = firebaseFixture.H2UserId, InvitedByOccupantId = firebaseFixture.H2OccupantId, }; RestClient client = GetClient(); RestRequest request = apiCall(firebaseFixture.H1Token, sutEndpoint, sutHttpMethod, occupantToInsert); IRestResponse response = client.Execute <OccupantInviteResponse>(request); forbiddenExpectations(response); }
public async Task <OccupantInviteResponse> GetFirebaseUserByEmail(OccupantInviteRequest invitee) { OccupantInviteResponse msg = new OccupantInviteResponse(); try { // msg = await nodeServices.InvokeAsync<OccupantInviteResponse>("node_services/myHouseFirebaseAdmin.js", $"getFirebaseUserByEmail \"{invitee.Email}\""); msg = await nodeServices.InvokeAsync <OccupantInviteResponse>("build/actions/getFirebaseUserByEmail.js", $"{invitee.Email}"); } catch (Exception ex) { logger.Error(ex, ex.Message); } return(msg); }
public async Task <bool> InviteOccupant(OccupantInviteRequest invite) { // TODO: Send invite email! return(await asyncConnection(invite.InvitedByUserId, invite.InvitedByOccupantId, async db => { bool occupantInvited = false; OccupantInviteResponse existingOccupant = GetFirebaseUserByEmail(invite.Email); if (existingOccupant != null) { this.logger.Information($"Creating Occupant from invite: {invite.ToString()}"); OccupantInsertRequest createOccupant = new OccupantInsertRequest { InviteAccepted = false, UserId = existingOccupant.Uid, DisplayName = existingOccupant.DisplayName, EnteredBy = invite.InvitedByUserId, InvitedByOccupantId = invite.InvitedByOccupantId }; this.logger.Information($"Creating Occupant: {createOccupant.ToString()}"); OccupantResponse newOccupant = await this.InsertOccupantQuery(db, createOccupant); this.logger.Information($"Created Occupant: {newOccupant.ToString()}"); NewsFeedInsertRequest householdInviteNewsItem = new NewsFeedInsertRequest { EnteredBy = invite.InvitedByUserId, OccupantId = invite.InvitedByOccupantId, Headline = "Invited to a new household", SubHeadline = "Congrats", Story = "You have been invited to a new household! Go to households to accept the invite.", Author = invite.InvitedByUserId, Recipient = newOccupant.UserId, }; this.logger.Information($"Creating News Feed Invite: {invite.ToString()}"); await newsFeedsRepository.InsertNewsFeedQuery(db, householdInviteNewsItem); occupantInvited = true; } else { // TODO: Improve functionality here! this.logger.Error("Existing occupant: {existingOccupant}, not found for email {invite}", existingOccupant, invite.Email); throw new Exception($"The email address {invite.Email} must sign up to myHouse first"); } return occupantInvited; })); }
public void InviteOccupantTest() { OccupantInviteRequest occupantToInsert = new OccupantInviteRequest { Email = firebaseFixture.H3Email, InvitedByUserId = firebaseFixture.H2UserId, InvitedByOccupantId = firebaseFixture.H2OccupantId, }; RestClient client = GetClient(); RestRequest request = apiCall <OccupantInviteRequest>(firebaseFixture.H2Token, sutEndpoint, sutHttpMethod, occupantToInsert); IRestResponse <OccupantInviteResponse> response = client.Execute <OccupantInviteResponse>(request); string expectedContent = serialize(new OccupantInviteResponse { Email = firebaseFixture.H3Email, EmailVerified = false, Uid = firebaseFixture.H3UserId, DisplayName = firebaseFixture.H3DisplayName }); response.StatusCode.ShouldBeEquivalentTo(HttpStatusCode.OK); response.Content.ShouldBeEquivalentTo(expectedContent); }
public async Task <IActionResult> RequestInviteOccupant([FromBody] OccupantInviteRequest invitee) { return(await RequestHandler <bool>(HttpVerbs.Put, invitee.InvitedByUserId, async() => await occupantsRepository.InviteOccupant(invitee))); }