예제 #1
0
        public void AuthicatedGet()
        {
            MockManager.Init();

            Mock photoMock = MockManager.Mock <PhotoRepository>(Constructor.NotMocked);

            string searchUrl = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=" + API_KEY + "&privacy_filter=0&user_id=xUser&api_sig=yyyy&page=1&per_page=100&auth_token=xyz";

            photoMock.ExpectAndReturn("GetFrob", "1");
            photoMock.ExpectAndReturn("GetSignature", "yyyy");
            photoMock.ExpectAndReturn("CreateDesktopToken", "xyz").Args("1", true, Permission.Delete.ToString().ToLower());
            photoMock.ExpectAndReturn("GetNSID", "xUser").Args("flickr.people.findByUsername", "username", "neetulee");
            photoMock.ExpectAndReturn("GetElement", MockElement("Linq.Flickr.Test.Responses.Owner.xml")).Args(searchUrl);


            var query = from photo in _context.Photos
                        where photo.ViewMode == ViewMode.Owner && photo.User == "neetulee"
                        select photo;


            Photo lastPhoto = query.Last();

            Assert.IsTrue(lastPhoto.ViewMode == ViewMode.Private);

            MockManager.Verify();
        }
예제 #2
0
        public void DoPeopleTest()
        {
            MockManager.Init();

            string id = "12037949754@N01";

            Mock photoMock  = MockManager.Mock <PhotoRepository>(Constructor.NotMocked);
            Mock peopleMock = MockManager.Mock <PeopleRepository>(Constructor.NotMocked);

            Mock restBuilderMock = MockManager.Mock <RestToCollectionBuilder <People> >(Constructor.NotMocked);

            // this also ensures that GetNSID should be called from photo repo only.
            photoMock.ExpectAndReturn("GetNSID", id);
            peopleMock.ExpectAndReturn("GetSignature", "yyyy");
            restBuilderMock.ExpectAndReturn("GetElement", MockElement(RESOURCE_NS + ".PeopleInfo.xml"));

            var query = from p in _context.Peoples
                        where p.Username == "bees"
                        select p;

            People people = query.Single();

            Assert.IsTrue(people.Id == id && people.Username == "bees");

            MockManager.Verify();
        }
예제 #3
0
        public void DoPopularTagTest()
        {
            MockManager.Init();

            Mock restBuilderMock = MockManager.Mock <RestToCollectionBuilder <PopularTag> >(Constructor.NotMocked);

            // set the expectation.
            restBuilderMock.ExpectAndReturn("GetElement", MockElement(RESOURCE_NS + ".HotTagGetList.xml"));

            var query = from tag in _context.PopularTags
                        where tag.Period == TagPeriod.Day && tag.Count == 6
                        orderby tag.Score ascending
                        select tag;

            int count = query.Count();

            // see if the expected and returned value are same.
            Assert.IsTrue(count == 6);

            PopularTag firstTag = query.First();

            Assert.IsTrue(firstTag.Score == 4);

            PopularTag lastTag = query.Last();

            Assert.IsTrue(lastTag.Score == 20);

            MockManager.Verify();
        }
예제 #4
0
        public void Photo_Comment()
        {
            MockManager.Init();

            #region Add comment
            Mock photoCommentAdd = MockManager.Mock <CommentRepository>(Constructor.NotMocked);

            photoCommentAdd.ExpectAndReturn("Authenticate", "1234").Args(Permission.Delete.ToString());
            photoCommentAdd.ExpectAndReturn("GetSignature", "yyyy");
            photoCommentAdd.ExpectAndReturn("DoHTTPPost", MockElement(RESOURCE_NS + ".AddComment.xml").ToString());

            Comment comment = new Comment();

            comment.PhotoId = COMMENT_PHOTO_ID;
            comment.Text    = "Testing comment add [LINQ.Flickr]";

            _context.Photos.Comments.Add(comment);
            _context.SubmitChanges();

            Assert.IsTrue(comment.Id == "1");
            #endregion

            #region Get added comment
            Mock photoCommentMock = MockManager.Mock <CommentRepository>(Constructor.NotMocked);
            Mock httpCallBase     = MockManager.Mock <RestToCollectionBuilder <Comment> >(Constructor.NotMocked);

            photoCommentMock.ExpectAndReturn("GetSignature", "yyyy");
            httpCallBase.ExpectAndReturn("GetElement", MockElement(RESOURCE_NS + ".GetComment.xml"));

            var query = from c in _context.Photos.Comments
                        where c.PhotoId == COMMENT_PHOTO_ID && c.Id == comment.Id
                        select c;

            Comment commentGet = query.Single();

            Assert.IsTrue(commentGet.Author == "11" && commentGet.PhotoId == COMMENT_PHOTO_ID && commentGet.AuthorName == "John Doe");
            #endregion

            #region Delete added
            Mock photoCommentDelete = MockManager.Mock <CommentRepository>(Constructor.NotMocked);

            photoCommentDelete.ExpectAndReturn("Authenticate", "1234").Args(Permission.Delete.ToString());
            photoCommentDelete.ExpectAndReturn("GetSignature", "yyyy");
            photoCommentDelete.ExpectAndReturn("DoHTTPPost", MockElement(RESOURCE_NS + ".DeleteComment.xml").ToString());

            _context.Photos.Comments.Remove(comment);
            _context.SubmitChanges();
            #endregion

            MockManager.Verify();
        }
예제 #5
0
        public void PhotoComment()
        {
            MockManager.Init();
            Mock photoCommentMock = MockManager.Mock <CommentRepository>(Constructor.NotMocked);

            photoCommentMock.ExpectAndReturn("Authenticate", "1234").Args(Permission.Delete.ToString());
            photoCommentMock.ExpectAndReturn("GetSignature", "yyyy");
            photoCommentMock.ExpectAndReturn("DoHTTPPost", MockElement(RESOURCE_NS + ".AddComment.xml").ToString());

            Comment comment = new Comment();

            comment.PhotoId = "1x";
            comment.Text    = "Testing comment add [LINQ.Flickr]";

            _context.Photos.Comments.Add(comment);
            _context.SubmitChanges();

            Assert.IsTrue(comment.Id == "1");

            MockManager.Verify();
        }
예제 #6
0
        public void DoPhotoUploadAndDeleteTest()
        {
            MockManager.Init();

            Stream photoRes = GetResourceStream("Linq.Flickr.Test.blank.gif");
            Photo  photo    = new Photo {
                Title = "Flickr logo", FileName = "Test.Mock", File = photoRes, ViewMode = ViewMode.Public
            };

            using (var photoAddMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                var authRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);

                authRepo.ExpectAndReturn("Authenticate", "1234", 2).Args(Permission.Delete);


                photoAddMock.FakeSignatureCall();
                photoAddMock.FakeElementCall(ResourceNs + ".UploadStatus.xml");

                byte[] oImage = new byte[photoRes.Length];

                photoRes.Read(oImage, 0, oImage.Length);
                photoRes.Seek(0, SeekOrigin.Begin);

                string path = System.AppDomain.CurrentDomain.BaseDirectory + "\\photo.txt";

                FileStream fileStream = null;

                if (!File.Exists(path))
                {
                    fileStream = File.Create(path);
                }
                else
                {
                    fileStream = File.Open(path, FileMode.Truncate);
                }

                photoAddMock.FakeHttpRequestObject(fileStream);
                photoAddMock.FakeWebResponseGetResponse();
                photoAddMock.FakeWebResponseObject(ResourceNs + ".Photo.xml");

                // add to the collection.
                context.Photos.Add(photo);
                context.Photos.SubmitChanges();

                fileStream.Dispose();

                FileStream readStream = File.Open(path, FileMode.Open);

                // read the binary content from file.
                BinaryReader reader = new BinaryReader(readStream);

                byte[] content = new byte[reader.BaseStream.Length];

                content = reader.ReadBytes(content.Length);

                reader.Close();

                readStream.Close();
                readStream.Dispose();

                // end file read

                // construct and verify image
                byte[] uImage = new byte[oImage.Length];

                byte[] footer = Encoding.UTF8.GetBytes("\r\n--FLICKR_BOUNDARY--\r\n");

                int endIndex   = content.Length - footer.Length;
                int startIndex = endIndex - oImage.Length;

                int count = 0;

                for (int index = startIndex; index < endIndex; index++)
                {
                    uImage[count] = content[index];
                    count++;
                }
                MemoryStream mStream = new MemoryStream();

                mStream.Write(uImage, 0, uImage.Length);
                mStream.Seek(0, SeekOrigin.Begin);

                using (Bitmap bitmap = new Bitmap(mStream))
                {
                }

                mStream.Close();
                // end image verification.

                Assert.IsTrue(photo.Id == "1");

                authRepo.Verify();
            }

            using (var photoDeleteMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                var authRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);

                authRepo.ExpectAndReturn("Authenticate", "1234", 1).Args(Permission.Delete);

                photoDeleteMock.FakeSignatureCall();
                photoDeleteMock.FakeDoHttpPost(ResourceNs + ".DeletePhoto.xml");

                context.Photos.Remove(photo);
                context.SubmitChanges();

                authRepo.Verify();
            }
        }
예제 #7
0
        public void DoPhoto_CommentTest()
        {
            MockManager.Init();

            Comment comment = new Comment();


            #region Add comment

            var addRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);
            addRepo.ExpectAndReturn("Authenticate", "1234", 1).Args(Permission.Delete);

            using (var commentAddMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentAddMock.FakeDoHttpPostAndReturnStringResult(ResourceNs + ".AddComment.xml");

                comment.PhotoId = COMMENT_PHOTO_ID;
                comment.Text    = "Testing comment add [LINQ.Flickr]";

                context.Photos.Comments.Add(comment);
                context.SubmitChanges();

                Assert.IsTrue(comment.Id == "1");
            }

            addRepo.Verify();
            #endregion

            #region Get added comment



            Comment commentGet = null;

            using (var commentGetMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentGetMock.FakeSignatureCall();
                commentGetMock.MockRESTBuilderGetElement(ResourceNs + ".GetComment.xml");

                var query = from c in context.Photos.Comments
                            where c.PhotoId == COMMENT_PHOTO_ID && c.Id == comment.Id
                            select c;

                commentGet = query.Single();

                Assert.IsTrue(commentGet.Author == "11" && commentGet.PhotoId == COMMENT_PHOTO_ID && commentGet.AuthorName == "John Doe");
            }

            #endregion


            #region update comment

            var updateRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);
            updateRepo.ExpectAndReturn("Authenticate", "1234", 1).Args(Permission.Delete);


            using (var commentUpdateMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                const string updatedText = "#123#";
                // line verfies if the text is passed properly for update.
                commentUpdateMock.FakeSignatureCall("flickr.photos.comments.editComment", true, "comment_id", "1", "comment_text", updatedText, "auth_token", "1234");
                commentUpdateMock.FakeDoHttpPostAndReturnStringResult(ResourceNs + ".UpdateComment.xml");

                commentGet.Text = updatedText;

                context.SubmitChanges();
            }

            updateRepo.Verify();

            #endregion

            #region Delete added


            var deleteRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);
            deleteRepo.ExpectAndReturn("Authenticate", "1234", 1).Args(Permission.Delete);


            using (var commentDeleteMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentDeleteMock.FakeSignatureCall();
                commentDeleteMock.FakeDoHttpPostAndReturnStringResult(ResourceNs + ".DeleteComment.xml");

                context.Photos.Comments.Remove(commentGet);
                context.SubmitChanges();
            }

            deleteRepo.Verify();
            #endregion
        }
예제 #8
0
        public void DoPhotoTest()
        {
            MockManager.Init();

            using (var photoGetMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                photoGetMock.FakeElementCall("Linq.Flickr.Test.Responses.Search.xml");

                var searchQuery = (from p in context.Photos
                                   where p.SearchText == "macbook" && p.FilterMode == FilterMode.Safe &&
                                   p.Extras == (ExtrasOption.Views | ExtrasOption.Date_Taken | ExtrasOption.Date_Upload | ExtrasOption.Tags | ExtrasOption.Date_Upload)
                                   orderby PhotoOrder.Interestingness ascending
                                   select p).Take(100);

                int count = searchQuery.Count();

                Photo first = searchQuery.First();

                Assert.IsTrue(first.SharedProperty.Perpage == count);
                Assert.IsTrue(first.Title == "test" && first.Id == "505611561");
                Assert.IsTrue(first.ExtrasResult.Views == 8);

                Photo last = searchQuery.Last();

                Assert.IsTrue(last.SharedProperty.Page == 1);
                Assert.IsTrue(last.SharedProperty.Total == 66604);
                Assert.IsTrue(last.Title == "DSCN0355" && last.Id == "2373030074");

                DateTime dateTime = DateTime.Parse("2008-03-29 20:25:05");

                Assert.IsTrue(dateTime == last.TakeOn);

                dateTime = GetDate("1206847505");

                Assert.IsTrue(dateTime == last.UploadedOn);

                dateTime = GetDate("1206847506");

                Assert.IsTrue(dateTime == last.UpdatedOn);

                Assert.IsTrue(last.Tags.Length == 2);

                //Assert.IsTrue();

                string constructedWebUrl = string.Format("http://www.flickr.com/photos/{0}/{1}/", last.NsId, last.Id);

                Assert.IsTrue(string.Compare(constructedWebUrl, last.WebUrl, StringComparison.Ordinal) == 0);
            }

            Photo authPhoto = null;



            using (var authenticatedMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                var authRepo = MockManager.MockAll <AuthRepository>(Constructor.NotMocked);

                AuthToken token = new AuthToken
                {
                    FullName = "Mehfuz Hossain",
                    Id       = "1",
                    Perm     = "delete",
                    UserId   = "x@y"
                };

                authRepo.ExpectAndReturn("Authenticate", token, 1).Args(true, Permission.Delete);
                ///validates user call
                authenticatedMock.FakeGetNsidByUsername("neetulee");
                authenticatedMock.FakeElementCall("Linq.Flickr.Test.Responses.Owner.xml");

                var authQuery = from photo in context.Photos
                                where photo.ViewMode == ViewMode.Owner && photo.User == "neetulee"
                                select photo;

                authPhoto = authQuery.Last();

                Assert.IsTrue(authPhoto.ViewMode == ViewMode.Private);
                authRepo.Verify();
            }

            using (FakeFlickrRepository <PhotoRepository, Photo> authenticatedMockU = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                var authRepo = MockManager.MockAll <AuthRepository>(Constructor.Mocked);

                authRepo.ExpectAndReturn("Authenticate", "1234", 1).Args(Permission.Delete);

                const string updatedTitle = "NewTitle";

                // line verfies if the text is passed properly for update.
                authenticatedMockU.FakeSignatureCall("flickr.photos.setMeta", true, "photo_id", authPhoto.Id, "title", updatedTitle,
                                                     "description", authPhoto.Description ?? " ", "auth_token", "1234");

                authenticatedMockU.FakeDoHttpPostAndReturnStringResult(ResourceNs + ".DeletePhoto.xml");

                authPhoto.Title = updatedTitle;
                // will raise a update call.
                context.SubmitChanges();

                authRepo.Verify();
            }
        }
예제 #9
0
        public void DoPhoto_CommentTest()
        {
            MockManager.Init();

            Comment comment = new Comment();

            #region Add comment
            using (FakeFlickrRepository <CommentRepository, Comment> commentAddMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentAddMock.MockAuthenticateCall(Permission.Delete, 1);
                commentAddMock.MockSignatureCall();
                commentAddMock.MockDoHttpPostAndReturnStringResult(RESOURCE_NS + ".AddComment.xml");

                comment.PhotoId = COMMENT_PHOTO_ID;
                comment.Text    = "Testing comment add [LINQ.Flickr]";

                _context.Photos.Comments.Add(comment);
                _context.SubmitChanges();

                Assert.IsTrue(comment.Id == "1");
            }
            #endregion

            #region Get added comment

            Comment commentGet = null;

            using (FakeFlickrRepository <CommentRepository, Comment> commentGetMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentGetMock.MockSignatureCall();
                commentGetMock.MockRESTBuilderGetElement(RESOURCE_NS + ".GetComment.xml");

                var query = from c in _context.Photos.Comments
                            where c.PhotoId == COMMENT_PHOTO_ID && c.Id == comment.Id
                            select c;

                commentGet = query.Single();

                Assert.IsTrue(commentGet.Author == "11" && commentGet.PhotoId == COMMENT_PHOTO_ID && commentGet.AuthorName == "John Doe");
            }
            #endregion


            #region update comment
            using (FakeFlickrRepository <CommentRepository, Comment> commentUpdateMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                const string updateText = "#123#";
                commentUpdateMock.MockAuthenticateCall(Permission.Delete, 1);
                // line verfies if the text is passed properly for update.
                commentUpdateMock.MockSignatureCall("flickr.photos.comments.editComment", true, "comment_id", "1", "comment_text", updateText, "auth_token", "1234");
                commentUpdateMock.MockDoHttpPostAndReturnStringResult(RESOURCE_NS + ".UpdateComment.xml");

                commentGet.Text = updateText;

                _context.SubmitChanges();
            }
            #endregion

            #region Delete added

            using (FakeFlickrRepository <CommentRepository, Comment> commentDeleteMock = new FakeFlickrRepository <CommentRepository, Comment>())
            {
                commentDeleteMock.MockAuthenticateCall(Permission.Delete, 1);
                commentDeleteMock.MockSignatureCall();
                commentDeleteMock.MockDoHttpPostAndReturnStringResult(RESOURCE_NS + ".DeleteComment.xml");

                _context.Photos.Comments.Remove(comment);
                _context.SubmitChanges();
            }
            #endregion

            MockManager.Verify();
        }
예제 #10
0
        public void DoPhotoTest()
        {
            MockManager.Init();

            using (FakeFlickrRepository <PhotoRepository, Photo> photoGetMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                photoGetMock.MockElementCall("Linq.Flickr.Test.Responses.Search.xml");

                var searchQuery = (from p in _context.Photos
                                   where p.SearchText == "macbook" && p.FilterMode == FilterMode.Safe &&
                                   p.Extras == (ExtrasOption.Views | ExtrasOption.Date_Taken | ExtrasOption.Date_Upload | ExtrasOption.Tags | ExtrasOption.Date_Upload)
                                   orderby PhotoOrder.Interestingness ascending
                                   select p).Take(100);

                int count = searchQuery.Count();

                Photo first = searchQuery.First();

                Assert.IsTrue(first.SharedProperty.Perpage == count);
                Assert.IsTrue(first.Title == "test" && first.Id == "505611561");
                Assert.IsTrue(first.Views == 8);

                Photo last = searchQuery.Last();

                Assert.IsTrue(last.SharedProperty.Page == 1);
                Assert.IsTrue(last.SharedProperty.Total == 66604);
                Assert.IsTrue(last.Title == "DSCN0355" && last.Id == "2373030074");

                DateTime dateTime = DateTime.Parse("2008-03-29 20:25:05");

                Assert.IsTrue(dateTime == last.TakeOn);

                dateTime = GetDate("1206847505");

                Assert.IsTrue(dateTime == last.UploadedOn);

                dateTime = GetDate("1206847506");

                Assert.IsTrue(dateTime == last.UpdatedOn);

                Assert.IsTrue(last.Tags.Length == 2);

                //Assert.IsTrue();

                string constructedWebUrl = string.Format("http://www.flickr.com/photos/{0}/{1}/", last.NsId, last.Id);

                Assert.IsTrue(string.Compare(constructedWebUrl, last.WebUrl, StringComparison.Ordinal) == 0);
            }

            Photo authPhoto = null;

            using (FakeFlickrRepository <PhotoRepository, Photo> authenticatedMock = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                authenticatedMock.MockSignatureCall();
                authenticatedMock.MockCreateAndStoreNewToken(Permission.Delete);
                authenticatedMock.MockGetNSIDByUsername("neetulee");
                authenticatedMock.MockElementCall("Linq.Flickr.Test.Responses.Owner.xml");

                var authQuery = from photo in _context.Photos
                                where photo.ViewMode == ViewMode.Owner && photo.User == "neetulee"
                                select photo;

                authPhoto = authQuery.Last();

                Assert.IsTrue(authPhoto.ViewMode == ViewMode.Private);
            }


            using (FakeFlickrRepository <PhotoRepository, Photo> authenticatedMockU = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                const string updatedTitle = "NewTitle";
                authenticatedMockU.MockAuthenticateCall(Permission.Delete, 1);
                // line verfies if the text is passed properly for update.
                authenticatedMockU.MockSignatureCall("flickr.photos.setMeta", true, "photo_id", authPhoto.Id, "title", updatedTitle,
                                                     "description", authPhoto.Description ?? " ", "auth_token", "1234");

                authenticatedMockU.MockDoHttpPostAndReturnStringResult(RESOURCE_NS + ".DeletePhoto.xml");

                authPhoto.Title = updatedTitle;
                // will raise a update call.
                _context.SubmitChanges();
            }

            using (FakeFlickrRepository <PhotoRepository, Photo> getDetailPhoto = new FakeFlickrRepository <PhotoRepository, Photo>())
            {
                getDetailPhoto.MockCreateAndStoreNewToken(Permission.Delete);
                getDetailPhoto.MockAuthenticateCall(false, Permission.Delete, 1);
                getDetailPhoto.MockSignatureCall();
                getDetailPhoto.MockElementCall("Linq.Flickr.Test.Responses.PhotoDetail.xml");

                var photoDetailQuery = from photo in _context.Photos
                                       where photo.Id == "xxx" && photo.PhotoSize == PhotoSize.Medium && photo.ViewMode == ViewMode.Owner
                                       select photo;

                Photo detailPhoto = photoDetailQuery.Single();

                Assert.IsTrue(detailPhoto.UploadedOn == GetDate("1208716675"));
                Assert.IsTrue(detailPhoto.User == "*Park+Ride*");
                Assert.IsTrue(detailPhoto.NsId == "63497523@N00");
                Assert.IsTrue(detailPhoto.WebUrl == "http://www.flickr.com/photos/63497523@N00/2428052817/");
            }

            MockManager.Verify();
        }