/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> /// <exception cref="System.ArgumentNullException"> /// <paramref name="context" /> is null. /// </exception> public virtual IPartner CreatePartnerOperations(PartnerContext context) { AuthenticationResult authResult; context.AssertNotNull(nameof(context)); try { authResult = PartnerSession.Instance.AuthenticationFactory.Authenticate( context, null); IPartnerCredentials credentials = PartnerCredentials.Instance.GenerateByUserCredentials( context.ApplicationId, new AuthenticationToken(authResult.AccessToken, authResult.ExpiresOn)); PartnerService.Instance.ApplicationName = "Partner Center PowerShell (Preview)"; return(PartnerService.Instance.CreatePartnerOperations(credentials)); } finally { authResult = null; } }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> public IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); // Billing Profile partnerOperations.Setup(p => p.Profiles.BillingProfile.Get()).Returns(GetPartnerBillingProfile()); partnerOperations.Setup(p => p.Profiles.BillingProfile.Update(It.IsAny <BillingProfile>())).Returns(GetPartnerBillingProfileUpdated()); // Country Validation Rules partnerOperations.Setup(p => p.CountryValidationRules.ByCountry(It.IsAny <string>()).Get()).Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US")); // Legal Profile partnerOperations.Setup(p => p.Profiles.LegalBusinessProfile.Get(VettingVersion.Current)).Returns( OperationFactory.Instance.GetResource <LegalBusinessProfile>("GetPartnerLegalProfile")); partnerOperations.Setup(p => p.Profiles.LegalBusinessProfile.Update(It.IsAny <LegalBusinessProfile>())).Returns( OperationFactory.Instance.GetResource <LegalBusinessProfile>("UpdatePartnerLegalProfile")); // Support Profile partnerOperations.Setup(p => p.Profiles.SupportProfile.Get()).Returns( OperationFactory.Instance.GetResource <SupportProfile>("GetPartnerSupportProfile")); partnerOperations.Setup(p => p.Profiles.SupportProfile.Get()).Returns( OperationFactory.Instance.GetResource <SupportProfile>("UpdatePartnerSupportProfile")); // Validations partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true); partnerOperations.Setup(p => p.CountryValidationRules.ByCountry(It.IsAny <string>()).Get()).Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US")); return(partnerOperations.Object); }
public override void SetRequestParam(PartnerContext context) { context.RequestParam["client_id"] = context.PassportInfo.Parnter.AppID; context.RequestParam["redirect_uri"] = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl)); context.RequestParam["state"] = context.PassportInfo.Parnter.CustomProperty1; context.RequestParam["timestamp"] = GetNowTime2Timestamp(); }
/// <summary> /// Signs the request data. /// </summary> /// <param name="context">The context.</param> /// <returns></returns> private string SignRequestData(PartnerContext context) { StringBuilder builder = new StringBuilder(); if (context.RequestParam != null && context.RequestParam.AllKeys != null && context.RequestParam.AllKeys.Length > 0) { List <string> allKeys = context.RequestParam.AllKeys.OrderBy(m => m).ToList(); foreach (string key in allKeys) { if (key.Equals("sign", StringComparison.CurrentCultureIgnoreCase) || key.Equals("sign_type", StringComparison.CurrentCultureIgnoreCase)) { continue; } builder.AppendFormat("{0}={1}&", key, context.RequestParam[key]); } } string sourceData = builder.ToString().TrimEnd('&'); sourceData += string.Format("{0}", context.PassportInfo.Parnter.AppSecret); string signData = GetMD5(sourceData, context.PassportInfo.Parnter.Encoding); //Debug模式下记录相关信息至日志 if (context.PassportInfo.Parnter.Debug.Equals("1")) { string sourceParam = BuildStringFromNameValueCollection(context.RequestParam); Logger.WriteLog(string.Format("原始值:{0},签名明文:{1},签名:{2}", sourceParam, sourceData, signData), "PartnerAlipay", "SignRequestData"); } return(signData); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); // Product partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ByTargetView(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Product> >("GetProduct")); // Product Availability partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.ByTargetSegment(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Availability> >("GetProductAvailability")); partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Availability> >("GetProductAvailability")); partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Availabilities.ById(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetResource <Availability>("GetProductAvailabilityById")); // Product Inventory partnerOperations.Setup(p => p.Extensions.Product.ByCountry(It.IsAny <string>()).CheckInventory(It.IsAny <InventoryCheckRequest>())).Returns( OperationFactory.Instance.GetResource <IEnumerable <InventoryItem> >("GetProductInventory")); // Product SKUs partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ById(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetResource <Sku>("GetProductSku")); partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Sku> >("GetProductSku")); partnerOperations.Setup(p => p.Products.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).Skus.ByTargetSegment(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Sku> >("GetProductSku")); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> /// <exception cref="System.ArgumentNullException"> /// <paramref name="context" /> is null. /// </exception> public virtual IAggregatePartner CreatePartnerOperations(PartnerContext context) { context.AssertNotNull(nameof(context)); return(PartnerService.Instance.CreatePartnerOperations( new PowerShellCredentials( PartnerSession.Instance.AuthenticationFactory.Authenticate(context)))); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> public IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.Domains.ByDomain(It.IsAny <string>()).Exists()).Returns(true); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.Relationships.Get(PartnerRelationshipType.IsIndirectCloudSolutionProviderOf)).Returns( OperationFactory.Instance.GetResource <ResourceCollection <PartnerRelationship> >("GetIndirectResellers")); return(partnerOperations.Object); }
/// <summary> /// Authenticates the user using the specified parameters. /// </summary> /// <param name="context">The partner's execution context.</param> /// <param name="password">The password used to authenicate the user. This value can be null.</param> /// <returns>The result from the authentication request.</returns> /// <exception cref="ArgumentNullException"> /// <paramref name="context"/> is null. /// </exception> public AuthenticationResult Authenticate(PartnerContext context, SecureString password) { AuthenticationContext authContext; AuthenticationResult authResult; PartnerEnvironment environment; context.AssertNotNull(nameof(context)); try { environment = PartnerEnvironment.PublicEnvironments[context.Environment]; authContext = new AuthenticationContext($"{environment.ActiveDirectoryAuthority}{context.TenantId}"); if (string.IsNullOrEmpty(context.Username)) { authResult = authContext.AcquireToken( environment.PartnerCenterEndpoint, context.ApplicationId, new Uri("urn:ietf:wg:oauth:2.0:oob"), PromptBehavior.Always, UserIdentifier.AnyUser); context.TenantId = authResult.TenantId; context.Username = authResult.UserInfo.DisplayableId; } else if (password != null) { authResult = authContext.AcquireToken( environment.PartnerCenterEndpoint, context.ApplicationId, new UserCredential( context.Username, password)); context.TenantId = authResult.TenantId; context.Username = authResult.UserInfo.DisplayableId; } else { authResult = authContext.AcquireToken( environment.PartnerCenterEndpoint, context.ApplicationId, new Uri("urn:ietf:wg:oauth:2.0:oob"), PromptBehavior.Never, new UserIdentifier(context.Username, UserIdentifierType.RequiredDisplayableId)); } return(authResult); } finally { authContext = null; environment = null; } }
/// <summary> /// Creates an instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private IPartner CreatePartnerOperationsWithInvalidAddress(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.Profiles.BillingProfile.Get()).Returns(GetPartnerBillingProfile()); partnerOperations.Setup(p => p.Profiles.BillingProfile.Update(It.IsAny <BillingProfile>())).Returns(GetPartnerBillingProfileUpdated()); partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(false); return(partnerOperations.Object); }
/// <summary> /// 第三方登录 /// </summary> /// <param name="identify">第三方标识</param> /// <param name="returnUrl">登录之后返回的url</param> /// <returns></returns> public string Login(string identify, string returnUrl = "") { PartnerContext context = new PartnerContext(); context.PartnerIdentify = identify; context.ReturnUrl = returnUrl; Partners partner = Partners.GetInstance(context); return(partner != null?partner.GetRequestContent(context) : string.Empty); }
/// <summary> /// 设置请求参数 /// </summary> /// <param name="context">第三方登录上下文</param> public override void SetRequestParam(PartnerContext context) { context.RequestParam["_input_charset"] = context.PassportInfo.Parnter.Encoding; context.RequestParam["partner"] = context.PassportInfo.Parnter.AppID; context.RequestParam["service"] = "alipay.auth.authorize"; context.RequestParam["target_service"] = "user.auth.quick.login"; context.RequestParam["return_url"] = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl)); context.RequestParam["sign_type"] = "MD5"; context.RequestParam["sign"] = SignRequestData(context); }
/// <summary> /// Performs the execution of the command. /// </summary> protected override void ProcessRecord() { AzureAccount account = new AzureAccount(); IAggregatePartner partnerOperations; OrganizationProfile profile; SecureString password = null; if (ParameterSetName.Equals(AccessTokenParameterSet, StringComparison.InvariantCultureIgnoreCase)) { account.Properties[AzureAccountPropertyType.AccessToken] = AccessToken; account.Properties[AzureAccountPropertyType.AccessTokenExpiration] = AccessTokenExpiresOn.ToString(CultureInfo.CurrentCulture); account.Type = AccountType.AccessToken; } else if (ParameterSetName.Equals(ServicePrincipalParameterSet, StringComparison.InvariantCultureIgnoreCase)) { account.Properties[AzureAccountPropertyType.ServicePrincipalSecret] = Credential.Password.ConvertToString(); account.Type = AccountType.ServicePrincipal; } else { account.Type = AccountType.User; } if (Credential != null) { account.Id = Credential.UserName; password = Credential.Password; } account.Properties[AzureAccountPropertyType.Tenant] = string.IsNullOrEmpty(TenantId) ? CommonEndpoint : TenantId; PartnerContext context = new PartnerContext { Account = account, ApplicationId = ApplicationId, Environment = Environment, TokenCache = TokenCache ?? TokenCache.DefaultShared }; PartnerSession.Instance.AuthenticationFactory.Authenticate(context, password); PartnerSession.Instance.Context = context; if (context.Account.Type == AccountType.User) { partnerOperations = PartnerSession.Instance.ClientFactory.CreatePartnerOperations(context); profile = partnerOperations.Profiles.OrganizationProfile.Get(); context.CountryCode = profile.DefaultAddress.Country; context.Locale = profile.Culture; } WriteObject(PartnerSession.Instance.Context); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.Analytics.Licenses.Deployment.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <PartnerLicensesDeploymentInsights> >("GetPartnerLicenseDeploymentInsights")); partnerOperations.Setup(p => p.Analytics.Licenses.Usage.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <PartnerLicensesUsageInsights> >("GetPartnerLicensesUsageInsights")); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> public IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.Offers.ByCountry("US").ById("031C9E47-4802-4248-838E-778FB1D2CC05").Get()).Returns(GetOffer()); partnerOperations.Setup(p => p.Offers.ByCountry("US").Get()).Returns(GetOffers()); partnerOperations.Setup(p => p.Offers.ByCountry(It.IsAny <string>()).ById(It.IsAny <string>()).AddOns.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <Offer> >("GetOfferAddon")); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IPartner CreatePartnerOperations(PartnerContext context) { Mock <IPartner> partnerOperations = new Mock <IPartner>(); partnerOperations.Setup(p => p.RateCards.Azure.Get(null, null)).Returns( OperationFactory.Instance.GetResource <AzureRateCard>("GetAzureRateCard")); partnerOperations.Setup(p => p.RateCards.Azure.GetShared(null, null)).Returns( OperationFactory.Instance.GetResource <AzureRateCard>("GetAzureRateCardSharedServices")); return(partnerOperations.Object); }
public override void SetRequestParam(PartnerContext context) { context.RequestParam["method"] = HttpUtility.UrlEncode("sso.checkLogin"); context.RequestParam["version"] = HttpUtility.UrlEncode("1.0"); context.RequestParam["appId"] = HttpUtility.UrlEncode(context.PassportInfo.Parnter.AppID); context.RequestParam["timestamp"] = GetNowTime2Timestamp(); context.RequestParam["nonce"] = (new Random()).Next(100000).ToString(); context.RequestParam["back_url"] = SpecialUrlEncode(BuildActionUrl(context.PassportInfo.Base.BaseUrl, context.PassportInfo.Parnter.LoginBackUrl)); context.RequestParam["need_login"] = "******"; context.RequestParam["client_state"] = SpecialUrlEncode(context.ReturnUrl); context.RequestParam["sign"] = SignData(context); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IAggregatePartner CreatePartnerOperations(PartnerContext context) { Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>(); // Country Valiation Operations partnerOperations.Setup(p => p.CountryValidationRules.ByCountry("US").Get()) .Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US")); // Validations partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true); return(partnerOperations.Object); }
public static Partners GetInstance(PartnerContext context) { if (context != null && !string.IsNullOrWhiteSpace(context.PartnerIdentify)) { context.PassportInfo = GetPassportInfo(context.PartnerIdentify); if (context.PassportInfo != null && context.PassportInfo.Parnter != null) { return(GetInstance(context.PassportInfo.Parnter.PartnerProcessor)); } } return(null); }
/// <summary> /// 构造上送请求数据 /// </summary> /// <param name="context">支付上下文</param> /// <returns></returns> protected virtual string BuildRequestContent(PartnerContext context) { StringBuilder builder = new StringBuilder(); if (context.RequestParam != null && context.RequestParam.Count > 0) { foreach (string name in context.RequestParam) { builder.AppendFormat("{0}={1}&", name, context.RequestParam[name]); } return(string.Format("{0}?{1}", context.PassportInfo.Parnter.LoginUrl, builder.ToString().TrimEnd('&'))); } return(string.Empty); }
/// <summary> /// 根据支付上下文获取一个支付上送请求数据 /// </summary> /// <param name="context">支付上下文</param> /// <returns></returns> public string GetRequestContent(PartnerContext context) { if (context != null && !string.IsNullOrWhiteSpace(context.PartnerIdentify)) { if (context.RequestParam == null) { context.RequestParam = new NameValueCollection(); } SetRequestParam(context); return(BuildRequestContent(context)); } return(string.Empty); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IAggregatePartner CreatePartnerOperations(PartnerContext context) { Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>(); partnerOperations.Setup(p => p.AuditRecords.Query(It.IsAny <DateTime>(), null, null)).Returns( OperationFactory.Instance.GetResource <SeekBasedResourceCollection <AuditRecord> >("GetAuditRecord")); // Enumerator Operations partnerOperations.Setup(p => p.Enumerators.AuditRecords.Create(It.IsAny <SeekBasedResourceCollection <AuditRecord> >())) .Returns( new ResourceCollectionEnumerator <SeekBasedResourceCollection <AuditRecord> >( OperationFactory.Instance.GetResource <SeekBasedResourceCollection <AuditRecord> >("GetAuditRecord"))); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IAggregatePartner CreatePartnerOperations(PartnerContext context) { Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>(); // Enumerator Operations partnerOperations.Setup(p => p.Enumerators.Invoices.Create(It.IsAny <ResourceCollection <Invoice> >())) .Returns( new ResourceCollectionEnumerator <ResourceCollection <Invoice> >( OperationFactory.Instance.GetResource <ResourceCollection <Invoice> >("GetInvoice"))); // Invoice Operations partnerOperations.Setup(p => p.Invoices.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <Invoice> >("GetInvoice")); partnerOperations.Setup(p => p.Invoices[It.IsAny <string>()].Get()).Returns( OperationFactory.Instance.GetResource <Invoice>("GetInvoiceById")); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IAggregatePartner CreateResellerPartnerOperations(PartnerContext context) { Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>(); // Customer Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Patch(It.IsAny <Customer>())).Returns( OperationFactory.Instance.GetResource <Customer>("RemoveResellerRelationship")); // Relationship Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Relationships.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <PartnerRelationship> >("GetPartnerRelationship")); // Subscription Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <Subscription> >("GetCustomerSubscription")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions[It.IsAny <string>()] .Patch(It.IsAny <Subscription>())).Returns(OperationFactory.Instance.GetResource <Subscription>("SuspendSubscription")); return(partnerOperations.Object); }
public PartnerContext Authenticate(string applicationId, EnvironmentName environment, string username, SecureString password, string tenantId) { AuthenticationResult authResult; IPartner partner; OrganizationProfile profile; PartnerContext context; applicationId.AssertNotEmpty(nameof(applicationId)); environment.AssertNotNull(nameof(environment)); tenantId.AssertNotEmpty(nameof(tenantId)); try { context = new PartnerContext { ApplicationId = applicationId, Environment = environment, TenantId = tenantId, Username = username }; authResult = Authenticate(context, password); partner = PartnerSession.Instance.ClientFactory.CreatePartnerOperations(context); profile = partner.Profiles.OrganizationProfile.Get(); context.CountryCode = profile.DefaultAddress.Country; context.Locale = profile.Culture; context.UserId = authResult.UserInfo.UniqueId; return(context); } finally { authResult = null; partner = null; profile = null; } }
/// <summary> /// Acquires the security token from the authority. /// </summary> /// <param name="context">Context to be used when requesting a security token.</param> /// <param name="debugAction">The action to write debug statements.</param> /// <param name="promptAction">The action to prompt the user for input.</param> /// <returns>The result from the authentication request.</returns> public AuthenticationToken Authenticate(PartnerContext context, Action <string> debugAction, Action <string> promptAction = null) { return(new AuthenticationToken("STUB_TOKEN", DateTime.UtcNow.AddHours(1))); }
public EditModel(PartnerContext context) { _context = context; }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> private static IAggregatePartner CreatePartnerOperations(PartnerContext context) { Mock <IAggregatePartner> partnerOperations = new Mock <IAggregatePartner>(); // Customer Configuration Policy partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <ConfigurationPolicy> >("GetCustomerConfigurationPolicies")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <ConfigurationPolicy> >("GetCustomerConfigurationPolicies")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Get()). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Get()). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Patch(It.IsAny <ConfigurationPolicy>())). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Patch(It.IsAny <ConfigurationPolicy>())). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies.Create(It.IsAny <ConfigurationPolicy>())). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.Create(It.IsAny <ConfigurationPolicy>())). Returns(OperationFactory.Instance.GetResource <ConfigurationPolicy>("GetCustomerConfigurationPolicyById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ConfigurationPolicies[It.IsAny <string>()].Delete()); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ConfigurationPolicies.ById(It.IsAny <string>()).Delete()); // Country Valiation Operations partnerOperations.Setup(p => p.CountryValidationRules.ByCountry("US").Get()) .Returns(OperationFactory.Instance.GetResource <CountryValidationRules>("GetCountryValidationRules-US")); // Customer Operations partnerOperations.Setup(p => p.Customers.Create(It.IsAny <Customer>())) .Returns(OperationFactory.Instance.GetNewCustomer()); partnerOperations.Setup(p => p.Customers.Get()).Returns(OperationFactory.Instance.GetCustomers()); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Get()) .Returns(OperationFactory.Instance.GetCustomer()); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Get()) .Returns(OperationFactory.Instance.GetCustomer()); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Profiles.Billing.Update(It.IsAny <CustomerBillingProfile>())). Returns(OperationFactory.Instance.GetCustomerBillingProfile()); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Profiles.Billing.Update(It.IsAny <CustomerBillingProfile>())). Returns(OperationFactory.Instance.GetCustomerBillingProfile()); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Entitlements.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <Entitlement> >("GetEntitlement")); // Customer User Role Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].DirectoryRoles.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).DirectoryRoles.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <DirectoryRole> >("GetCustomerUserRoleById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles[It.IsAny <string>()].UserMembers.Create(It.IsAny <UserMember>())). Returns(OperationFactory.Instance.GetResource <UserMember>("AddCustomerUserRoleMember")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.ById(It.IsAny <string>()).UserMembers.Create(It.IsAny <UserMember>())). Returns(OperationFactory.Instance.GetResource <UserMember>("AddCustomerUserRoleMember")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DirectoryRoles[It.IsAny <string>()].UserMembers[It.IsAny <string>()].Delete()); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).DirectoryRoles.ById(It.IsAny <string>()).UserMembers.ById(It.IsAny <string>()).Delete()); // Delete Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Delete()).Verifiable(); // Device Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <DeviceBatch> >("GetCustomerDeviceBatch")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches[It.IsAny <string>()].Devices.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <Device> >("GetCustomerDevice")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].DeviceBatches.ById(It.IsAny <string>()).Devices.Get()) .Returns(OperationFactory.Instance.GetResource <ResourceCollection <Device> >("GetCustomerDevice")); // Domain Operations partnerOperations.Setup(p => p.Domains.ByDomain(It.IsAny <string>()).Exists()).Returns(false); // Enumerator Operations partnerOperations.Setup(p => p.Enumerators.Customers.Create(It.IsAny <SeekBasedResourceCollection <Customer> >())) .Returns(new ResourceCollectionEnumerator <SeekBasedResourceCollection <Customer> >(OperationFactory.Instance.GetCustomers())); partnerOperations.Setup(p => p.Enumerators.Utilization.Azure.Create(It.IsAny <SeekBasedResourceCollection <AzureUtilizationRecord> >())) .Returns(new ResourceCollectionEnumerator <ResourceCollection <AzureUtilizationRecord> >( OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords"))); // License Operations List <LicenseGroupId> licenseGroupIds = new List <LicenseGroupId>() { LicenseGroupId.Group1 }; partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].SubscribedSkus.Get(licenseGroupIds)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicenseByGroup")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).SubscribedSkus.Get(licenseGroupIds)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicenseByGroup")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].SubscribedSkus.Get(null)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicense")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).SubscribedSkus.Get(null)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <SubscribedSku> >("GetCustomerLicense")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Licenses.Get(null)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <License> >("GetCustomerLicenseUser")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Licenses.Get(null)). Returns(OperationFactory.Instance.GetResource <ResourceCollection <License> >("GetCustomerLicenseUser")); // Managed Service Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].ManagedServices.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <ManagedService> >("GetCustomerManagedServices")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).ManagedServices.Get()).Returns( OperationFactory.Instance.GetResource <ResourceCollection <ManagedService> >("GetCustomerManagedServices")); // Request Relationship Operations partnerOperations.Setup(p => p.Customers.RelationshipRequest.Get()).Returns( OperationFactory.Instance.GetResource <CustomerRelationshipRequest>("GetResellerRelationshipLink")); // Subscription Operations partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions.Get()). Returns(OperationFactory.Instance.GetResource <ResourceCollection <Subscription> >("GetCustomerSubscription")); // User Operations partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Get()). Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Get()). Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Query(It.IsAny <IQuery>())). Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAllDeleted")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Query(It.IsAny <IQuery>())). Returns(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAllDeleted")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Get()). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Get()). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Enumerators.CustomerUsers.Create(It.IsAny <SeekBasedResourceCollection <CustomerUser> >())). Returns(new ResourceCollectionEnumerator <SeekBasedResourceCollection <CustomerUser> >(OperationFactory.Instance.GetResource <SeekBasedResourceCollection <CustomerUser> >("GetCustomerUserAll"))); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Patch(It.IsAny <CustomerUser>())). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.ById(It.IsAny <string>()).Patch(It.IsAny <CustomerUser>())). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].Patch(It.IsAny <CustomerUser>())). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users.Create(It.IsAny <CustomerUser>())). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Users.Create(It.IsAny <CustomerUser>())). Returns(OperationFactory.Instance.GetResource <CustomerUser>("GetCustomerUserById")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Users[It.IsAny <string>()].LicenseUpdates.Create(It.IsAny <LicenseUpdate>())).Returns( OperationFactory.Instance.GetResource <LicenseUpdate>("UpdateUserLicense")); // Utilization Operations partnerOperations.Setup(p => p.Customers.ById(It.IsAny <string>()).Subscriptions.ById(It.IsAny <string>()) .Utilization.Azure.Query( It.IsAny <DateTimeOffset>(), It.IsAny <DateTimeOffset>(), It.IsAny <AzureUtilizationGranularity>(), It.IsAny <bool>(), It.IsAny <int>())).Returns( OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords")); partnerOperations.Setup(p => p.Customers[It.IsAny <string>()].Subscriptions[It.IsAny <string>()] .Utilization.Azure.Query( It.IsAny <DateTimeOffset>(), It.IsAny <DateTimeOffset>(), It.IsAny <AzureUtilizationGranularity>(), It.IsAny <bool>(), It.IsAny <int>())).Returns( OperationFactory.Instance.GetResource <ResourceCollection <AzureUtilizationRecord> >("GetUtilizationRecords")); // Validation Operations partnerOperations.Setup(p => p.Validations.IsAddressValid(It.IsAny <Address>())).Returns(true); return(partnerOperations.Object); }
/// <summary> /// Creates a new instance of the object used to interface with Partner Center. /// </summary> /// <param name="context">The partner's execution context.</param> /// <returns>An instance of the <see cref="PartnerOperations" /> class.</returns> public IPartner CreatePartnerOperations(PartnerContext context) { return(initializeFunc(context)); }
/// <summary> /// Acquires the security token from the authority. /// </summary> /// <param name="context">Context to be used when requesting a security token.</param> /// <param name="password">Password used when requesting a security token.</param> /// <returns>The result from the authentication request.</returns> public AuthenticationToken Authenticate(PartnerContext context, SecureString password = null) { AuthenticationContext authContext; AuthenticationResult authResult; PartnerEnvironment environment; environment = PartnerEnvironment.PublicEnvironments[context.Environment]; authContext = new AuthenticationContext( $"{environment.ActiveDirectoryAuthority}{context.Account.Properties[AzureAccountPropertyType.Tenant]}", context.TokenCache); if (context.Account.Type == AccountType.AccessToken) { return(new AuthenticationToken( context.Account.Properties[AzureAccountPropertyType.AccessToken], DateTime.Parse(context.Account.Properties[AzureAccountPropertyType.AccessTokenExpiration], CultureInfo.CurrentCulture))); } else if (context.Account.Type == AccountType.ServicePrincipal) { authResult = Task.Run(() => authContext.AcquireTokenAsync( environment.AzureAdGraphEndpoint, new ClientCredential( context.Account.Id, context.Account.Properties[AzureAccountPropertyType.ServicePrincipalSecret]))).Result; } else if (PartnerSession.Instance.Context == null && password == null) { authResult = Task.Run(() => authContext.AcquireTokenAsync( environment.PartnerCenterEndpoint, context.ApplicationId, redirectUri, new PlatformParameters(PromptBehavior.Always), UserIdentifier.AnyUser)).Result; context.Account.Id = authResult.UserInfo.DisplayableId; context.Account.Properties[AzureAccountPropertyType.Tenant] = authResult.TenantId; context.Account.Properties[AzureAccountPropertyType.UserIdentifier] = authResult.UserInfo.UniqueId; } else if (PartnerSession.Instance.Context == null && password != null) { authResult = Task.Run(() => authContext.AcquireTokenAsync( environment.PartnerCenterEndpoint, context.ApplicationId, new UserPasswordCredential( context.Account.Id, password))).Result; context.Account.Id = authResult.UserInfo.DisplayableId; context.Account.Properties[AzureAccountPropertyType.Tenant] = authResult.TenantId; context.Account.Properties[AzureAccountPropertyType.UserIdentifier] = authResult.UserInfo.UniqueId; } else { authResult = Task.Run(() => authContext.AcquireTokenAsync( environment.PartnerCenterEndpoint, context.ApplicationId, redirectUri, new PlatformParameters(PromptBehavior.Never), new UserIdentifier(context.Account.Id, UserIdentifierType.RequiredDisplayableId))).Result; } return(new AuthenticationToken(authResult.AccessToken, authResult.ExpiresOn)); }