public void InitializeOAuth2AuthCodeWorksWithCsdl() { // Arrange string annotation = @"<Annotation Term=""NS.MyOAuth2AuthCode""> <Record > <PropertyValue Property=""TokenUrl"" String=""http://tokenUrl"" /> <PropertyValue Property=""AuthorizationUrl"" String=""http://authorizationUrl"" /> </Record> </Annotation>"; IEdmModel model = GetEdmModel(annotation); Assert.NotNull(model); // guard Assert.NotNull(model.EntityContainer); // Act OAuth2AuthCode authoCode = model.GetRecord <OAuth2AuthCode>(model.EntityContainer, "NS.MyOAuth2AuthCode"); // Assert Assert.Null(authoCode.Name); Assert.Null(authoCode.Description); Assert.Null(authoCode.Scopes); Assert.Equal("http://tokenUrl", authoCode.TokenUrl); Assert.Equal("http://authorizationUrl", authoCode.AuthorizationUrl); }
public void InitializeOAuth2AuthCodeWithRecordSuccess() { // Arrange IEdmRecordExpression record = new EdmRecordExpression( new EdmPropertyConstructor("TokenUrl", new EdmStringConstant("http://tokenUrl")), new EdmPropertyConstructor("AuthorizationUrl", new EdmStringConstant("http://authorizationUrl"))); OAuth2AuthCode authCode = new OAuth2AuthCode(); Assert.Null(authCode.Name); Assert.Null(authCode.Description); Assert.Null(authCode.Scopes); Assert.Null(authCode.AuthorizationUrl); Assert.Null(authCode.TokenUrl); // Act authCode.Initialize(record); // Assert Assert.Null(authCode.Name); Assert.Null(authCode.Description); Assert.Null(authCode.Scopes); Assert.Equal("http://authorizationUrl", authCode.AuthorizationUrl); Assert.Equal("http://tokenUrl", authCode.TokenUrl); }
public void SchemeTypeKindAndOAuthTypeSetCorrectly() { // Arrange OAuth2AuthCode authCode = new OAuth2AuthCode(); // Act & Assert Assert.Equal(SecuritySchemeType.OAuth2, authCode.SchemeType); Assert.Equal(OAuth2Type.AuthCode, authCode.OAuth2Type); }
private static void AppendOAuth2(OpenApiSecurityScheme scheme, OAuthAuthorization oAuth2) { Debug.Assert(scheme != null); Debug.Assert(oAuth2 != null); scheme.Flows = new OpenApiOAuthFlows(); OpenApiOAuthFlow flow = null; switch (oAuth2.OAuth2Type) { case OAuth2Type.AuthCode: // AuthCode OAuth2AuthCode authCode = (OAuth2AuthCode)oAuth2; flow = new OpenApiOAuthFlow { AuthorizationUrl = new Uri(authCode.AuthorizationUrl), TokenUrl = new Uri(authCode.TokenUrl) }; scheme.Flows.AuthorizationCode = flow; break; case OAuth2Type.Pasword: // Password OAuth2Password password = (OAuth2Password)oAuth2; flow = new OpenApiOAuthFlow { TokenUrl = new Uri(password.TokenUrl) }; scheme.Flows.Password = flow; break; case OAuth2Type.Implicit: // Implicit OAuth2Implicit @implicit = (OAuth2Implicit)oAuth2; flow = new OpenApiOAuthFlow { AuthorizationUrl = new Uri(@implicit.AuthorizationUrl) }; scheme.Flows.Implicit = flow; break; case OAuth2Type.ClientCredentials: // ClientCredentials OAuth2ClientCredentials credentials = (OAuth2ClientCredentials)oAuth2; flow = new OpenApiOAuthFlow { TokenUrl = new Uri(credentials.TokenUrl) }; scheme.Flows.ClientCredentials = flow; break; } Debug.Assert(flow != null); flow.RefreshUrl = new Uri(oAuth2.RefreshUrl); if (oAuth2.Scopes != null) { flow.Scopes = oAuth2.Scopes.ToDictionary(s => s.Scope, s => s.Description); } }