Move some tests to pending
Write a bunch of unit tests and mark some of them as pending.
This commit is contained in:
		
							parent
							
								
									ab6572314e
								
							
						
					
					
						commit
						e0a8e01513
					
				| 
						 | 
				
			
			@ -34,7 +34,7 @@ describe("smr cacheing",function()
 | 
			
		|||
		local cache = require("cache")
 | 
			
		||||
		renderspy = spy.on(cache,"render")
 | 
			
		||||
		configure()
 | 
			
		||||
		error("TODO: complete")
 | 
			
		||||
		pending("TODO: complete")
 | 
			
		||||
	end)
 | 
			
		||||
	it("caches one page for domain/id and author.domain/id",function()
 | 
			
		||||
		local read_get = require("endpoints.read_get")
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ describe("smr cacheing",function()
 | 
			
		|||
	end)
 | 
			
		||||
	describe("author home page",function()
 | 
			
		||||
		it("lists all stories by that author",function()
 | 
			
		||||
			error("TODO")
 | 
			
		||||
			pending("TODO")
 | 
			
		||||
		end)
 | 
			
		||||
	end)
 | 
			
		||||
end)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,17 +52,21 @@ describe("smr login",function()
 | 
			
		|||
		)
 | 
			
		||||
	end)
 | 
			
		||||
	it("should give a session cookie when logging in with a user",function()
 | 
			
		||||
		pending("Look at cleaning mock env")
 | 
			
		||||
		mock_env.mockdb()
 | 
			
		||||
		local claim_post = require("endpoints.claim_post")
 | 
			
		||||
		local login_post = require("endpoints.login_post")
 | 
			
		||||
		local config = require("config")
 | 
			
		||||
		local db = require("db")
 | 
			
		||||
		configure()
 | 
			
		||||
 | 
			
		||||
		local username = "nuser"
 | 
			
		||||
		local claim_req = {
 | 
			
		||||
			method = "POST",
 | 
			
		||||
			host = "test.host",
 | 
			
		||||
			path = "/_claim",
 | 
			
		||||
			args = {
 | 
			
		||||
				user = "user"
 | 
			
		||||
				user = username
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		claim_post(claim_req)
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +75,7 @@ describe("smr login",function()
 | 
			
		|||
			host = "test.host",
 | 
			
		||||
			path = "/_login",
 | 
			
		||||
			args = {
 | 
			
		||||
				user = "user"
 | 
			
		||||
				user = username
 | 
			
		||||
			},
 | 
			
		||||
			file = {
 | 
			
		||||
				pass = claim_req.response
 | 
			
		||||
| 
						 | 
				
			
			@ -81,7 +85,7 @@ describe("smr login",function()
 | 
			
		|||
		local code = login_req.responsecode
 | 
			
		||||
		assert(
 | 
			
		||||
			code >= 300 and code <= 400,
 | 
			
		||||
			"Sucessful login should redirect the user"
 | 
			
		||||
			"Sucessful login should redirect the user, code:" .. tostring(code)
 | 
			
		||||
		)
 | 
			
		||||
		assert(
 | 
			
		||||
			login_req.response_headers,
 | 
			
		||||
| 
						 | 
				
			
			@ -114,8 +118,106 @@ describe("smr login",function()
 | 
			
		|||
			"Sucessful login should redirect to a location"
 | 
			
		||||
		)
 | 
			
		||||
		assert(
 | 
			
		||||
			login_req.response_headers["Location"] == "https://user." .. config.domain,
 | 
			
		||||
			login_req.response_headers["Location"] == "https://" .. username .. "." .. config.domain,
 | 
			
		||||
			"Login redirect should get domain from config file"
 | 
			
		||||
		)
 | 
			
		||||
	end)
 | 
			
		||||
	it("should allow logged in users the option of posting under their username",function()
 | 
			
		||||
		pending("Fix up cleaning db for unit tests")
 | 
			
		||||
		mock_env.mockdb()
 | 
			
		||||
		local claim_post = require("endpoints.claim_post")
 | 
			
		||||
		local login_post = require("endpoints.login_post")
 | 
			
		||||
		local paste_get = require("endpoints.paste_get")
 | 
			
		||||
		local paste_post = require("endpoints.paste_post")
 | 
			
		||||
		local read_get = require("endpoints.read_get")
 | 
			
		||||
		local db = require("db")
 | 
			
		||||
		local config = require("config")
 | 
			
		||||
		config.domain = "test.host"
 | 
			
		||||
		configure()
 | 
			
		||||
		local claim_req = {
 | 
			
		||||
			method = "POST",
 | 
			
		||||
			host = "test.host",
 | 
			
		||||
			path = "/_claim",
 | 
			
		||||
			args = {
 | 
			
		||||
				user = "user"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		claim_post(claim_req)
 | 
			
		||||
		login_req = {
 | 
			
		||||
			method = "POST",
 | 
			
		||||
			host = "test.host",
 | 
			
		||||
			path = "/_login",
 | 
			
		||||
			args = {
 | 
			
		||||
				user = "user"
 | 
			
		||||
			},
 | 
			
		||||
			file = {
 | 
			
		||||
				pass = claim_req.response
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		login_post(login_req)
 | 
			
		||||
		local cookie = login_req.response_headers["set-cookie"]
 | 
			
		||||
		local sessionid = cookie:match("session=([^;]+)")
 | 
			
		||||
		local paste_req_get = {
 | 
			
		||||
			method = "GET",
 | 
			
		||||
			host = "user.test.host",
 | 
			
		||||
			path = "/_paste",
 | 
			
		||||
			cookies = {
 | 
			
		||||
				session = sessionid
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		paste_get(paste_req_get)
 | 
			
		||||
		local option = '<option value="user">user</option>'
 | 
			
		||||
		assert(
 | 
			
		||||
			paste_req_get.response:find(option),
 | 
			
		||||
			"After logging in the user should have an option to "..
 | 
			
		||||
			"make posts as themselves. Looking for " .. option ..
 | 
			
		||||
			" but didn't find it in " .. paste_req_get.response
 | 
			
		||||
		)
 | 
			
		||||
		local paste_req_post = {
 | 
			
		||||
			method = "POST",
 | 
			
		||||
			host = "user.test.host",
 | 
			
		||||
			path = "/_paste",
 | 
			
		||||
			cookies = {
 | 
			
		||||
				session = sessionid
 | 
			
		||||
			},
 | 
			
		||||
			args = {
 | 
			
		||||
				title = "post title",
 | 
			
		||||
				text = "post text",
 | 
			
		||||
				markup = "plain",
 | 
			
		||||
				tags = "",
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		paste_post(paste_req_post)
 | 
			
		||||
		for row in db.conn:rows("SELECT COUNT(*) FROM posts") do
 | 
			
		||||
			assert(row[1] == 1, "Expected exactly 1 post in sample db")
 | 
			
		||||
		end
 | 
			
		||||
		local code = paste_req_post.responsecode
 | 
			
		||||
		assert(code >= 300 and code <= 400, "Should receive a redirect after posting, got:" .. tostring(code))
 | 
			
		||||
		assert(paste_req_post.response_headers, "Should have received some response headers")
 | 
			
		||||
		assert(paste_req_post.response_headers.Location, "Should have received a location in response headers")
 | 
			
		||||
		local redirect = paste_req_post.response_headers.Location:match("(/[^/]*)$")
 | 
			
		||||
		local read_req_get = {
 | 
			
		||||
			method = "GET",
 | 
			
		||||
			host = "user.test.host",
 | 
			
		||||
			path = redirect,
 | 
			
		||||
			cookies = {
 | 
			
		||||
				session = sessionid
 | 
			
		||||
			},
 | 
			
		||||
			args = {}
 | 
			
		||||
		}
 | 
			
		||||
		read_get(read_req_get)
 | 
			
		||||
		local response = read_req_get.response
 | 
			
		||||
		assert(
 | 
			
		||||
			response:find([[post title]]),
 | 
			
		||||
			"Failed to find post title in response."
 | 
			
		||||
		)
 | 
			
		||||
		assert(
 | 
			
		||||
			response:find([[By <a href="https://user.test.host">user</a>]]),
 | 
			
		||||
			"Failed to find the author name after a paste."
 | 
			
		||||
		)
 | 
			
		||||
		assert(
 | 
			
		||||
			response:find([[post text]]),
 | 
			
		||||
			"Failed to find post text in response."
 | 
			
		||||
		)
 | 
			
		||||
	end)
 | 
			
		||||
end)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue