private EnumerationInfo ReadHardEnum(Type enumValueClass, Table table) { Type enumType = _mapClassToEnum[enumValueClass]; int displayOrder = 1; // note that we process the enum constants in order of the underlying value assigned // so that the initial displayOrder reflects the natural ordering // (see msdn docs for Enum.GetValues for details) return(new EnumerationInfo(enumValueClass.FullName, table.Name, true, CollectionUtils.Map <object, EnumerationMemberInfo>(Enum.GetValues(enumType), delegate(object value) { string code = Enum.GetName(enumType, value); FieldInfo fi = enumType.GetField(code); EnumValueAttribute attr = AttributeUtils.GetAttribute <EnumValueAttribute>(fi); return new EnumerationMemberInfo( code, attr != null ? attr.Value : null, attr != null ? attr.Description : null, displayOrder++, false); }))); }
private static async Task RefreshUserAsync_ThrowsOnException(HttpStatusCode statusCode, string message) { string appUrl = MobileAppUriValidator.DummyMobileApp; string refreshUrl = appUrl + ".auth/refresh"; string userId = "sid:xxxxxxxxxxxxxxxxx"; TestHttpHandler hijack = new TestHttpHandler(); hijack.Response = TestHttpHandler.CreateResponse("error message from Mobile Apps refresh endpoint", statusCode); MobileServiceHttpClient.DefaultHandlerFactory = () => hijack; MobileServiceClient client = new MobileServiceClient(appUrl, hijack); client.CurrentUser = new MobileServiceUser(userId) { MobileServiceAuthenticationToken = "auth-token" }; MobileServiceInvalidOperationException exception = await AssertEx.Throws <MobileServiceInvalidOperationException>(() => client.RefreshUserAsync()); Assert.AreEqual(EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken), hijack.Request.Headers.GetValues(MobileServiceHttpClient.ZumoFeaturesHeader).FirstOrDefault()); Assert.AreEqual(message, exception.Message); Assert.IsNotNull(exception.Request); Assert.AreEqual(statusCode, exception.Response.StatusCode); }
public static int GetEnumValueAttribute <TEnum>(Enum value) where TEnum : struct { // Get the EnumValue attribute value for the enum value FieldInfo fi = value.GetType().GetField(value.ToString()); EnumValueAttribute attribute = (EnumValueAttribute)fi.GetCustomAttribute(typeof(EnumValueAttribute), false); return(attribute.EnumValue); }
public void AddFeaturesHeader_RequestHeadersIsNull() { IDictionary <string, string> requestedHeaders = null; requestedHeaders = MobileServiceHttpClient.FeaturesHelper.AddFeaturesHeader(requestHeaders: requestedHeaders, features: MobileServiceFeatures.None); Assert.IsNull(requestedHeaders); requestedHeaders = null; requestedHeaders = MobileServiceHttpClient.FeaturesHelper.AddFeaturesHeader(requestHeaders: requestedHeaders, features: MobileServiceFeatures.RefreshToken); Assert.AreEqual(EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken), requestedHeaders[MobileServiceHttpClient.ZumoFeaturesHeader]); }
public void ValidateFeatureCodes() { Assert.AreEqual("TT", EnumValueAttribute.GetValue(MobileServiceFeatures.TypedTable)); Assert.AreEqual("TU", EnumValueAttribute.GetValue(MobileServiceFeatures.UntypedTable)); Assert.AreEqual("AT", EnumValueAttribute.GetValue(MobileServiceFeatures.TypedApiCall)); Assert.AreEqual("AJ", EnumValueAttribute.GetValue(MobileServiceFeatures.JsonApiCall)); Assert.AreEqual("AG", EnumValueAttribute.GetValue(MobileServiceFeatures.GenericApiCall)); Assert.AreEqual("TC", EnumValueAttribute.GetValue(MobileServiceFeatures.TableCollection)); Assert.AreEqual("OL", EnumValueAttribute.GetValue(MobileServiceFeatures.Offline)); Assert.AreEqual("QS", EnumValueAttribute.GetValue(MobileServiceFeatures.AdditionalQueryParameters)); Assert.IsNull(EnumValueAttribute.GetValue(MobileServiceFeatures.None)); }
public void AddFeaturesHeader_ZumoFeaturesHeaderAlreadyExists() { IDictionary <string, string> requestedHeaders = new Dictionary <string, string>(); requestedHeaders.Add("key1", "value1"); requestedHeaders.Add("key2", "value2"); requestedHeaders.Add(MobileServiceHttpClient.ZumoFeaturesHeader, EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken)); Assert.AreEqual(3, requestedHeaders.Count); // AddFeaturesHeader won't add anything because ZumoFeaturesHeader already exists requestedHeaders = MobileServiceHttpClient.FeaturesHelper.AddFeaturesHeader(requestHeaders: requestedHeaders, features: MobileServiceFeatures.Offline); Assert.AreEqual(3, requestedHeaders.Count); Assert.AreEqual(EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken), requestedHeaders[MobileServiceHttpClient.ZumoFeaturesHeader]); }
private static async Task RefreshUserAsync_Setup(string alternateLoginUri = null) { string appUrl = MobileAppUriValidator.DummyMobileApp; string newAuthToken = "new-auth-token"; string userId = "sid:xxxxxxxxxxxxxxxxx"; string responseContent = "{\"authenticationToken\":\"" + newAuthToken + "\",\"user\":{\"userId\":\"" + userId + "\"}}"; TestHttpHandler hijack = new TestHttpHandler(); hijack.Response = new HttpResponseMessage(HttpStatusCode.OK); hijack.Response.Content = new StringContent(responseContent); MobileServiceHttpClient.DefaultHandlerFactory = () => hijack; MobileServiceClient client = new MobileServiceClient(appUrl, hijack); client.CurrentUser = new MobileServiceUser(userId) { MobileServiceAuthenticationToken = "auth-token" }; string refreshUrl; if (!string.IsNullOrEmpty(alternateLoginUri)) { refreshUrl = alternateLoginUri + ".auth/refresh"; client.AlternateLoginHost = new Uri(alternateLoginUri); } else { refreshUrl = appUrl + ".auth/refresh"; } MobileServiceUser user = await client.RefreshUserAsync(); Assert.AreEqual(EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken), hijack.Request.Headers.GetValues(MobileServiceHttpClient.ZumoFeaturesHeader).FirstOrDefault()); Assert.AreEqual(hijack.Request.RequestUri.OriginalString, refreshUrl); Assert.AreEqual(newAuthToken, user.MobileServiceAuthenticationToken); Assert.AreEqual(userId, user.UserId); }
public void Validate_RT_FeatureCode() => Assert.Equal("RT", EnumValueAttribute.GetValue(MobileServiceFeatures.RefreshToken));
public void Validate_QS_FeatureCode() => Assert.Equal("QS", EnumValueAttribute.GetValue(MobileServiceFeatures.AdditionalQueryParameters));
public void Validate_OL_FeatureCode() => Assert.Equal("OL", EnumValueAttribute.GetValue(MobileServiceFeatures.Offline));
public void Validate_TC_FeatureCode() => Assert.Equal("TC", EnumValueAttribute.GetValue(MobileServiceFeatures.TableCollection));
public void Validate_AG_FeatureCode() => Assert.Equal("AG", EnumValueAttribute.GetValue(MobileServiceFeatures.GenericApiCall));
public void Validate_AJ_FeatureCode() => Assert.Equal("AJ", EnumValueAttribute.GetValue(MobileServiceFeatures.JsonApiCall));
private string?GetAttributeValue(string name) { EnumValueAttribute attributes = _type.GetField(name).GetCustomAttribute <EnumValueAttribute>(); return(attributes?.Value); }
public void Validate_TU_FeatureCode() => Assert.Equal("TU", EnumValueAttribute.GetValue(MobileServiceFeatures.UntypedTable));
public void Validate_FeatureCode_None() => Assert.Null(EnumValueAttribute.GetValue(MobileServiceFeatures.None));
public static string GetValue(this Enum anEnum) { EnumValueAttribute enumValueAttribute = anEnum.GetAttribute <EnumValueAttribute>(); return(enumValueAttribute?.Value); }
public void Validate_AT_FeatureCode() => Assert.Equal("AT", EnumValueAttribute.GetValue(MobileServiceFeatures.TypedApiCall));