/// <summary> /// Create approval request /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='privateStoreId'> /// The store ID - must use the tenant ID /// </param> /// <param name='requestApprovalId'> /// The request approval ID to get create or update /// </param> /// <param name='payload'> /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <RequestApprovalResource> CreateApprovalRequestAsync(this IPrivateStoreOperations operations, string privateStoreId, string requestApprovalId, RequestApprovalResource payload = default(RequestApprovalResource), CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.CreateApprovalRequestWithHttpMessagesAsync(privateStoreId, requestApprovalId, payload, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
public void ApproveByAdminNotificationTest() { using (var context = MockContext.Start(this.GetType())) { using (var client = context.GetServiceClient <MarketplaceRPServiceClient>()) { SetUp(client); //create approval request PlanDetails planDetails = new PlanDetails { PlanId = planId, Justification = "because ...", SubscriptionId = testSubscription, SubscriptionName = TestSubscriptionName }; RequestApprovalResource requestApprovalResource = new RequestApprovalResource { PublisherId = "data3-limited-1019419", PlansDetails = new List <PlanDetails>() { planDetails } }; try { var approvalRequest = client.PrivateStore.CreateApprovalRequest(PrivateStoreId, requestApprovalId, requestApprovalResource); } catch (Exception ex) { if (!ex.Message.Contains("BadRequest")) { throw; } } var notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId); Assert.Contains(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId); // Approve request by admin AdminRequestApprovalsResource adminRequestApprovalsResource = new AdminRequestApprovalsResource { PublisherId = publisherId, AdminAction = "Approved", ApprovedPlans = new List <string>() { planId }, Comment = "I'm ok with that", CollectionIds = new List <string>() { collectionId } }; client.PrivateStore.UpdateAdminRequestApproval(PrivateStoreId, requestApprovalId, adminRequestApprovalsResource); var collectionOffers = client.PrivateStoreCollectionOffer.List(PrivateStoreId, collectionId); Assert.Contains(collectionOffers, x => x.UniqueOfferId == requestApprovalId); notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId); Assert.DoesNotContain(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId); CleanUp(client); } } }
/// <summary> /// Create approval request /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='privateStoreId'> /// The store ID - must use the tenant ID /// </param> /// <param name='requestApprovalId'> /// The request approval ID to get create or update /// </param> /// <param name='payload'> /// </param> public static RequestApprovalResource CreateApprovalRequest(this IPrivateStoreOperations operations, string privateStoreId, string requestApprovalId, RequestApprovalResource payload = default(RequestApprovalResource)) { return(operations.CreateApprovalRequestAsync(privateStoreId, requestApprovalId, payload).GetAwaiter().GetResult()); }
public void CreateAndWithdrawApprovalRequestTest() { using (var context = MockContext.Start(this.GetType())) { using (var client = context.GetServiceClient <MarketplaceRPServiceClient>()) { SetUp(client); //create approval request PlanDetails planDetails = new PlanDetails { PlanId = planId, Justification = "because ...", SubscriptionId = testSubscription, SubscriptionName = TestSubscriptionName }; RequestApprovalResource requestApprovalResource = new RequestApprovalResource { PublisherId = "data3-limited-1019419", PlansDetails = new List <PlanDetails>() { planDetails } }; try { var approvalRequest = client.PrivateStore.CreateApprovalRequest(PrivateStoreId, requestApprovalId, requestApprovalResource); } catch (Exception ex) { if (!ex.Message.Contains("BadRequest")) { throw; } } // Assert notification arrived var notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId); Assert.Contains(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId); var adminRequestApproval = client.PrivateStore.GetAdminRequestApproval(publisherId, PrivateStoreId, requestApprovalId); Assert.Equal("Pending", adminRequestApproval.AdminAction); RequestDetails requestDetails = new RequestDetails { PublisherId = publisherId, PlanIds = new List <string> { planId, managedAzurePlanId, managedAzureOptimiser }, SubscriptionId = testSubscription }; QueryRequestApprovalProperties queryRequestApprovalProperties = new QueryRequestApprovalProperties { Properties = requestDetails }; var requestApproval = client.PrivateStore.QueryRequestApprovalMethod(PrivateStoreId, requestApprovalId, queryRequestApprovalProperties); Assert.Equal("Pending", requestApproval.PlansDetails[planId].Status); // Withdraw request WithdrawProperties withdrawProperties = new WithdrawProperties { PublisherId = publisherId, PlanId = planId }; client.PrivateStore.WithdrawPlan(PrivateStoreId, requestApprovalId, withdrawProperties); notificationState = client.PrivateStore.QueryNotificationsState(PrivateStoreId); Assert.DoesNotContain(notificationState.ApprovalRequests, x => x.OfferId == requestApprovalId); CleanUp(client); } } }