Ejemplo n.º 1
0
        public async void VerifyExternalLanguageDeleteRequestFailures()
        {
            ExternalLanguage language = new ExternalLanguage
            {
                Name = "name"
            };
            Mock <ExternalLanguageOperations> operations = new Mock <ExternalLanguageOperations>();

            operations.Setup(x => x.DeleteLanguage(It.IsAny <IDbConnection>(), language.Name)).Throws(new Exception("Error"));
            ExternalLanguageService service = new ExternalLanguageService()
            {
                ExternalLanguageOperations = operations.Object
            };

            await VerifyError <ExternalLanguageDeleteResponseParams>(
                test : async(requestContext, connectionUrl) =>
            {
                ExternalLanguageDeleteRequestParams requestParams = new ExternalLanguageDeleteRequestParams
                {
                    OwnerUri     = connectionUrl,
                    LanguageName = language.Name
                };
                await service.HandleExternalLanguageDeleteRequest(requestParams, requestContext);
                return(null);
            });
        }
 public void VerifyCreateLanguageWithLocalFile()
 {
     using (SelfCleaningTempFile queryTempFile = new SelfCleaningTempFile())
     {
         ExternalLanguageOperations operations  = new ExternalLanguageOperations();
         ExternalLanguage           newLanguage = new ExternalLanguage()
         {
             Name     = "newLang",
             Contents = new List <ExternalLanguageContent>()
             {
                 new ExternalLanguageContent
                 {
                     IsLocalFile     = true,
                     PathToExtension = queryTempFile.FilePath
                 }
             }
         };
         Verify(null, (connection, lang, commandMock) =>
         {
             operations.UpdateLanguage(connection, newLanguage);
             commandMock.VerifySet(x => x.CommandText = It.Is <string>(s => s.Contains(ExternalLanguageOperations.CreateScript)));
             return(true);
         });
     }
 }
Ejemplo n.º 3
0
        public async void VerifyExternalLanguageDeleteRequest()
        {
            ExternalLanguage language = new ExternalLanguage
            {
                Name = "name"
            };
            Mock <ExternalLanguageOperations> operations = new Mock <ExternalLanguageOperations>();

            operations.Setup(x => x.DeleteLanguage(It.IsAny <IDbConnection>(), language.Name));
            ExternalLanguageService service = new ExternalLanguageService()
            {
                ExternalLanguageOperations = operations.Object
            };

            await VerifyRequst <ExternalLanguageDeleteResponseParams>(
                test : async(requestContext, connectionUrl) =>
            {
                ExternalLanguageDeleteRequestParams requestParams = new ExternalLanguageDeleteRequestParams
                {
                    OwnerUri     = connectionUrl,
                    LanguageName = language.Name
                };
                await service.HandleExternalLanguageDeleteRequest(requestParams, requestContext);
                return(null);
            },
                verify : (actual =>
            {
                Assert.NotNull(actual);
            }));
        }
        public void VerifyRemoveContentLanguage()
        {
            ExternalLanguageOperations operations = new ExternalLanguageOperations();
            ExternalLanguage           language   = new ExternalLanguage()
            {
                Name     = "name",
                Contents = new List <ExternalLanguageContent>()
                {
                    new ExternalLanguageContent
                    {
                        IsLocalFile       = false,
                        ExtensionFileName = "filepath"
                    }
                }
            };
            ExternalLanguage newLanguage = new ExternalLanguage()
            {
                Name     = language.Name,
                Contents = new List <ExternalLanguageContent>()
            };

            Verify(language, (connection, lang, commandMock) =>
            {
                operations.UpdateLanguage(connection, newLanguage);
                commandMock.VerifySet(x => x.CommandText = It.Is <string>(
                                          s => s.Contains(ExternalLanguageOperations.AlterScript) &&
                                          s.Contains(ExternalLanguageOperations.RemoveContentScript)));
                return(true);
            });
        }
        public void VerifyDeleteLanguageWithInvalidName()
        {
            ExternalLanguageOperations operations = new ExternalLanguageOperations();
            ExternalLanguage           language   = new ExternalLanguage();

            Verify(language, (connection, lang, commandMock) =>
            {
                Assert.Throws <LanguageExtensibilityException>(() => operations.DeleteLanguage(connection, language.Name));
                return(true);
            });
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Returns the status of external languages in a connection
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="languageName"></param>
        /// <returns></returns>
        private List <ExternalLanguage> GetLanguages(IDbConnection connection, string languageName = null)
        {
            Dictionary <int, ExternalLanguage> dic = new Dictionary <int, ExternalLanguage>();

            using (IDbCommand command = connection.CreateCommand())
            {
                command.CommandText = languageName != null ? GetLanguageScript : GetAllScript;
                if (languageName != null)
                {
                    var parameter = command.CreateParameter();
                    parameter.ParameterName = $"@{LanguageNameParamName}";
                    parameter.Value         = languageName;
                    command.Parameters.Add(parameter);
                }
                using (IDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        int    id                = reader.GetInt32(0);
                        string name              = reader.GetString(1);
                        string createdDate       = reader.IsDBNull(2) ? string.Empty : reader.GetDateTime(2).ToString();
                        string owner             = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
                        string extentionFileName = reader.IsDBNull(5) ? string.Empty : reader.GetString(5);
                        string platform          = reader.IsDBNull(6) ? string.Empty : reader.GetString(6);
                        string parameters        = reader.IsDBNull(7) ? string.Empty : reader.GetString(7);
                        string envVariables      = reader.IsDBNull(8) ? string.Empty : reader.GetString(8);
                        if (!dic.ContainsKey(id))
                        {
                            dic.Add(id, new ExternalLanguage
                            {
                                Name        = name,
                                Owner       = owner,
                                CreatedDate = createdDate,
                                Contents    = new List <ExternalLanguageContent>()
                            });
                        }
                        ExternalLanguage metadata = dic[id];
                        metadata.Contents.Add(new ExternalLanguageContent
                        {
                            EnvironmentVariables = envVariables,
                            Parameters           = parameters,
                            Platform             = platform,
                            ExtensionFileName    = extentionFileName
                        });
                    }
                }
            }
            return(new List <ExternalLanguage>(dic.Values));
        }
        public void VerifyDeleteLanguage()
        {
            ExternalLanguageOperations operations = new ExternalLanguageOperations();
            ExternalLanguage           language   = new ExternalLanguage()
            {
                Name = "name"
            };

            Verify(language, (connection, lang, commandMock) =>
            {
                operations.DeleteLanguage(connection, language.Name);
                commandMock.VerifySet(x => x.CommandText = It.Is <string>(s => s.Contains(ExternalLanguageOperations.DropScript)));
                return(true);
            });
        }
Ejemplo n.º 8
0
        private string GetLanguageModifyScript(ExternalLanguage language, List <ExternalLanguageContent> contents, Dictionary <string, object> parameters, ModifyType modifyType, ContentModifyType contentModifyType = ContentModifyType.Add)
        {
            string contentScript = string.Empty;

            for (int i = 0; i < contents.Count; i++)
            {
                var    content   = contents[i];
                string seperator = contentScript == string.Empty ? "" : ",";
                contentScript = $"{contentScript}{seperator}{GetLanguageContent(content, i, parameters)}";
            }

            string ownerScript   = string.IsNullOrWhiteSpace(language.Owner) ? "" : $"AUTHORIZATION [{CUtils.EscapeStringCBracket(language.Owner)}]";
            string scriptAction  = modifyType == ModifyType.Create ? CreateScript : AlterScript;
            string contentAction = "FROM";

            if (modifyType == ModifyType.Alter)
            {
                switch (contentModifyType)
                {
                case ContentModifyType.Modify:
                    contentAction = SetContentScript;
                    break;

                case ContentModifyType.Add:
                    contentAction = AddContentScript;
                    break;

                case ContentModifyType.Remove:
                    contentAction = RemoveContentScript;
                    break;
                }
            }
            return($@"
{scriptAction} [{CUtils.EscapeStringCBracket(language.Name)}]
{ownerScript}
{contentAction} {contentScript}
");
        }
Ejemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="language"></param>
        public virtual void UpdateLanguage(IDbConnection connection, ExternalLanguage language)
        {
            if (string.IsNullOrWhiteSpace(language?.Name))
            {
                throw new LanguageExtensibilityException($"Failed to update language. language or language name is empty.");
            }

            Dictionary <string, object> parameters      = new Dictionary <string, object>();
            ExternalLanguage            currentLanguage = GetLanguage(connection, language.Name);

            if (currentLanguage == null)
            {
                ExecuteNonQuery(connection, GetCreateScript(language, parameters), parameters);
            }
            else
            {
                foreach (var content in language.Contents)
                {
                    var currentContent = currentLanguage.Contents.FirstOrDefault(x => x.PlatformId == content.PlatformId);
                    if (currentContent != null)
                    {
                        ExecuteNonQuery(connection, GetUpdateScript(language, content, parameters, ContentModifyType.Modify), parameters);
                    }
                    else
                    {
                        ExecuteNonQuery(connection, GetUpdateScript(language, content, parameters, ContentModifyType.Add), parameters);
                    }
                }
                foreach (var currentContent in currentLanguage.Contents)
                {
                    var content = language.Contents.FirstOrDefault(x => x.PlatformId == currentContent.PlatformId);
                    if (content == null)
                    {
                        ExecuteNonQuery(connection, GetUpdateScript(language, currentContent, parameters, ContentModifyType.Remove), parameters);
                    }
                }
            }
        }
Ejemplo n.º 10
0
        public async void VerifyExternalLanguagListRequestConnectionFailures()
        {
            ExternalLanguage language = new ExternalLanguage
            {
                Name = "name"
            };
            Mock <ExternalLanguageOperations> operations = new Mock <ExternalLanguageOperations>();
            ExternalLanguageService           service    = new ExternalLanguageService()
            {
                ExternalLanguageOperations = operations.Object
            };

            await VerifyError <ExternalLanguageListResponseParams>(
                test : async(requestContext, connectionUrl) =>
            {
                ExternalLanguageListRequestParams requestParams = new ExternalLanguageListRequestParams
                {
                    OwnerUri = "invalid connection"
                };
                await service.HandleExternalLanguageListRequest(requestParams, requestContext);
                return(null);
            });
        }
Ejemplo n.º 11
0
 private string GetUpdateScript(ExternalLanguage language, ExternalLanguageContent content, Dictionary <string, object> parameters, ContentModifyType contentModifyType)
 {
     return(GetLanguageModifyScript(language, new List <ExternalLanguageContent> {
         content
     }, parameters, ModifyType.Alter, contentModifyType));
 }
Ejemplo n.º 12
0
 private string GetCreateScript(ExternalLanguage language, Dictionary <string, object> parameters)
 {
     return(GetLanguageModifyScript(language, language.Contents, parameters, ModifyType.Create));
 }
        private IDbConnection Verify(ExternalLanguage language, Func <IDbConnection, ExternalLanguage, Mock <IDbCommand>, bool> func)
        {
            Mock <IDbConnection>            connectionMock       = new Mock <IDbConnection>();
            Mock <IDbCommand>               commandMock          = new Mock <IDbCommand>();
            Mock <IDbDataParameter>         dbDataParamMock      = new Mock <IDbDataParameter>();
            Mock <IDataParameterCollection> dbDataParametersMock = new Mock <IDataParameterCollection>();
            Mock <IDataReader>              dataReaderMock       = new Mock <IDataReader>();
            bool dataReaderHasValues = language != null;

            dataReaderMock.Setup(x => x.Read()).Returns(() => dataReaderHasValues).Callback(() =>
            {
                dataReaderHasValues = false;
            }
                                                                                            );
            if (language != null)
            {
                ExternalLanguageContent content = language.Contents == null || language.Contents.Count == 0 ? null : language.Contents[0];

                dataReaderMock.Setup(x => x.GetInt32(0)).Returns(1);
                dataReaderMock.Setup(x => x.IsDBNull(1)).Returns(language.Name == null);
                dataReaderMock.Setup(x => x.GetString(1)).Returns(language.Name);

                dataReaderMock.Setup(x => x.IsDBNull(2)).Returns(language.CreatedDate == null);
                if (language.CreatedDate != null)
                {
                    dataReaderMock.Setup(x => x.GetDateTime(2)).Returns(DateTime.Parse(language.CreatedDate));
                }
                dataReaderMock.Setup(x => x.IsDBNull(3)).Returns(language.Owner == null);
                if (language.Owner != null)
                {
                    dataReaderMock.Setup(x => x.GetString(3)).Returns(language.Owner);
                }
                dataReaderMock.Setup(x => x.IsDBNull(5)).Returns(content == null || content.ExtensionFileName == null);
                if (content != null && content.ExtensionFileName != null)
                {
                    dataReaderMock.Setup(x => x.GetString(5)).Returns(content.ExtensionFileName);
                }
                dataReaderMock.Setup(x => x.IsDBNull(6)).Returns(content == null || content.Platform == null);
                if (content != null && content.Platform != null)
                {
                    dataReaderMock.Setup(x => x.GetString(6)).Returns(content.Platform);
                }
                dataReaderMock.Setup(x => x.IsDBNull(7)).Returns(content == null || content.Parameters == null);
                if (content != null && content.Parameters != null)
                {
                    dataReaderMock.Setup(x => x.GetString(7)).Returns(content.Parameters);
                }
                dataReaderMock.Setup(x => x.IsDBNull(8)).Returns(content == null || content.EnvironmentVariables == null);
                if (content != null && content.EnvironmentVariables != null)
                {
                    dataReaderMock.Setup(x => x.GetString(8)).Returns(content.EnvironmentVariables);
                }
            }
            dbDataParametersMock.Setup(x => x.Add(It.IsAny <object>()));
            dbDataParamMock.Setup(x => x.ParameterName);
            dbDataParamMock.Setup(x => x.Value);
            commandMock.Setup(x => x.CreateParameter()).Returns(dbDataParamMock.Object);
            commandMock.Setup(x => x.Parameters).Returns(dbDataParametersMock.Object);
            commandMock.SetupSet(x => x.CommandText = It.IsAny <string>());
            commandMock.Setup(x => x.ExecuteNonQuery());
            commandMock.Setup(x => x.ExecuteReader()).Returns(dataReaderMock.Object);
            connectionMock.Setup(x => x.CreateCommand()).Returns(commandMock.Object);
            func(connectionMock.Object, language, commandMock);

            return(connectionMock.Object);
        }