public void TestGetModel() { ContentObject co = FedoraControl.AddDefaultObject(); try { string urlTemplate = _baseUrl + "/" + co.PID + "/format/{0}?ID=" + _apiKey; //Test each of the content types string[] contentTypes = { "json", "dae", "fbx", "obj", "3ds", "o3dtgz" /*, "original" */ }; using (WebClient client = new WebClient()) { foreach (string type in contentTypes) { byte[] data = client.DownloadData(String.Format(urlTemplate, type)); Assert.Greater(data.Length, 0); } } } finally { new DataAccessFactory().CreateDataRepositorProxy().DeleteContentObject(co); } }
public void TestGetTexture() { ContentObject co = FedoraControl.AddDefaultObject(); string url = String.Format("{0}/{1}/Textures/ak47_dif.png?ID={2}", _baseUrl, co.PID, _apiKey), texPath = ConfigurationManager.AppSettings["ContentPath"] + "\\Preconverted\\ak47_dif.png"; Assert.True(testGetData(url, texPath)); }
public void TestReviews() { ContentObject co = FedoraControl.AddDefaultObject(); try { List <vwar.service.host.Review> createdReviews = new List <vwar.service.host.Review>(); createdReviews.Add(FedoraControl.CreateReview(co, 3, "*****@*****.**", "pretty cool")); string url = String.Format(_baseUrl + "/{0}/Reviews/json?id={1}", co.PID, _apiKey); //Check for single review List <vwar.service.host.Review> retrievedReviews = _serializer.Deserialize <List <vwar.service.host.Review> >(getRawJSON(url)); Assert.AreEqual(retrievedReviews.Count, 1); Assert.AreEqual(retrievedReviews[0].Rating, createdReviews[0].Rating); Assert.AreEqual(retrievedReviews[0].ReviewText, createdReviews[0].ReviewText); Assert.AreEqual(retrievedReviews[0].Submitter, createdReviews[0].Submitter); //Check for multiple reviews createdReviews.Add(FedoraControl.CreateReview(co, 2, "*****@*****.**", "not very good")); createdReviews.Add(FedoraControl.CreateReview(co, 4, "*****@*****.**", "very good")); //get the reviews again retrievedReviews = _serializer.Deserialize <List <vwar.service.host.Review> >(getRawJSON(url)); bool found = false; //Someone please implement a Find predicate, I am lazy foreach (vwar.service.host.Review cr in createdReviews) { found = false; foreach (vwar.service.host.Review rr in retrievedReviews) { if (cr.Submitter == rr.Submitter && cr.ReviewText == rr.ReviewText && cr.Rating == rr.Rating) { found = true; break; } } if (!found) { break; } } Assert.True(found); } finally { new DataAccessFactory().CreateDataRepositorProxy().DeleteContentObject(co); } }
public void TestSearch() { ContentObject co = FedoraControl.AddRandomObject(); try { List <string> terms = new List <string> { co.Title, co.Description }; foreach (string keyword in co.Keywords.Split(',')) { terms.Add(keyword); } foreach (string term in terms) { Assert.True(httpSearch(term, co)); } //Alter the search terms to partials Random r = new Random(); for (int i = 0; i < terms.Count; i++) { terms[i] = terms[i].Substring(0, r.Next(terms[i].Length)); } //Test single term search, partial match foreach (string term in terms) { Assert.True(httpSearch(term, co)); } //Test multiple term search Assert.True(httpSearch(String.Join(",", terms), co)); } finally { //delete the content object out of the system to maintain test atomicity new DataAccessFactory().CreateDataRepositorProxy().DeleteContentObject(co); } }
private bool testGetData(string url, string path) { ContentObject co = FedoraControl.AddDefaultObject(); try { string clientMD5 = MD5(File.ReadAllBytes(path)), serverMD5 = ""; using (WebClient client = new WebClient()) { byte[] data = client.DownloadData(String.Format(url, co.PID)); serverMD5 = MD5(data); } return(clientMD5.Equals(serverMD5)); } finally { new DataAccessFactory().CreateDataRepositorProxy().DeleteContentObject(co); } }
public void TestSupportingFile() { ContentObject co = FedoraControl.AddDefaultObject(); string filepath = ConfigurationManager.AppSettings["ContentPath"] + "\\Preconverted\\test.o3d"; using (FileStream fs = new FileStream(filepath, FileMode.Open)) { new DataAccessFactory().CreateDataRepositorProxy().AddSupportingFile(fs, co, "test.o3d", "this is a test description"); } string clientMD5 = MD5(File.ReadAllBytes(filepath)), serverMD5; string url = String.Format("{0}/{1}/SupportingFiles/test.o3d?ID={2}", _baseUrl, co.PID, _apiKey); using (WebClient client = new WebClient()) { byte[] data = client.DownloadData(url); serverMD5 = MD5(data); } Assert.AreEqual(clientMD5, serverMD5); }
public void TestMetadata() { ContentObject co = FedoraControl.AddDefaultObject(); try { string url = String.Format(_baseUrl + "/{0}/Metadata/json?id={1}", co.PID, _apiKey); Metadata metadata = _serializer.Deserialize <Metadata>(getRawJSON(url)); Assert.AreEqual(co.ArtistName, metadata.ArtistName); Assert.AreEqual(co.AssetType, metadata.AssetType); Assert.AreEqual(co.Description, metadata.Description); Assert.AreEqual(co.DeveloperName, metadata.DeveloperName); Assert.AreEqual(co.Downloads.ToString(), metadata.Downloads); Assert.AreEqual(co.Format, metadata.Format); Assert.AreEqual(co.Keywords, metadata.Keywords); Assert.AreEqual(co.MissingTextures, metadata.MissingTextures); Assert.AreEqual(co.NumPolygons.ToString(), metadata.NumPolygons); Assert.AreEqual(co.NumTextures.ToString(), metadata.NumTextures); Assert.AreEqual(co.PID, metadata.PID); Assert.AreEqual(co.Revision.ToString(), metadata.Revision); Assert.AreEqual(co.SponsorName, metadata.SponsorName); Assert.AreEqual(co.SupportingFiles, metadata.SupportingFiles); Assert.AreEqual(co.TextureReferences, metadata.TextureReferences); Assert.AreEqual(co.Title, metadata.Title); Assert.AreEqual(co.NumberOfRevisions.ToString(), metadata.TotalRevisions); Assert.AreEqual(co.UnitScale, metadata.UnitScale); Assert.AreEqual(co.UpAxis, metadata.UpAxis); Assert.AreEqual(co.UploadedDate.ToString(), metadata.UploadedDate); Assert.AreEqual(co.Views.ToString(), metadata.Views); } finally { new DataAccessFactory().CreateDataRepositorProxy().DeleteContentObject(co); } }
public void TestChangeAllFields() { if (!UserLoggedIn) { Login(); } ContentObject testCO = FedoraControl.AddDefaultObject(); selenium.Open("/Users/Edit.aspx?ContentObjectID=" + testCO.PID); selenium.WaitForPageToLoad("30000"); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_TitleTextBox")).SendKeys(EditDefaults.Title); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_ContentFileUpload")).SendKeys(editedContentPath + EditDefaults.FileName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_RequireResubmitCheckbox")).Click(); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_DeveloperLogoRadioButtonList_1")).Click(); System.Threading.Thread.Sleep(5000); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_DeveloperLogoFileUpload")).SendKeys(editedContentPath + EditDefaults.DevlogoName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_DeveloperNameTextBox")).SendKeys(EditDefaults.DeveloperName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_ArtistNameTextBox")).SendKeys(EditDefaults.ArtistName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_SponsorLogoRadioButtonList_1")).Click(); System.Threading.Thread.Sleep(5000); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_SponsorLogoFileUpload")).SendKeys(editedContentPath + EditDefaults.SponsorlogoName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_SponsorNameTextBox")).SendKeys(EditDefaults.SponsorName); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_DescriptionTextBox")).SendKeys(EditDefaults.Description); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_MoreInformationURLTextBox")).SendKeys(EditDefaults.DevUrl); //Delete the text in the textbox and replace it with the new tags selenium.GetEval("window.jQuery('#ctl00_ContentPlaceHolder1_EditControl_KeywordsTextBox').val('')"); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_KeywordsTextBox")).SendKeys(EditDefaults.Tags); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_Step1NextButton")).Click(); selenium.WaitForPageToLoad("1200000"); driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_EditControl_ValidationViewSubmitButton")).Click(); selenium.WaitForPageToLoad("1200000"); IDataRepository dal = new DataAccessFactory().CreateDataRepositorProxy(); ContentObject newCO = dal.GetContentObjectById(testCO.PID, false); Exception rethrow = null; try { Assert.True(newCO.Title == EditDefaults.Title); Assert.True(newCO.Keywords == EditDefaults.Tags.Replace(" ", "")); Assert.True(newCO.Description == EditDefaults.Description); Assert.True(newCO.ArtistName == EditDefaults.ArtistName); Assert.True(newCO.DeveloperName == EditDefaults.DeveloperName); Assert.True(newCO.MoreInformationURL == EditDefaults.DevUrl); //TODO: Determine if this is desired or non-desired behavior //string newfilename_base = EditDefaults.Title.ToLower().Replace(' ', '_') + ".zip"; //Assert.True(newCO.OriginalFileName == "original_" + newfilename_base); //Assert.True(newCO.Location == newfilename_base); //Assert.True(newCO.DisplayFile == newfilename_base.Replace(".zip", ".o3d")); } catch (Exception e) { rethrow = e; } finally { dal.DeleteContentObject(newCO); //We have to rethrow to let NUnit know the test failed if (rethrow != null) { throw rethrow; } } }