| 
				
			 | 
			
			 | 
			@@ -0,0 +1,62 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			package form | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import ( | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"bytes" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"errors" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"io" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"net/http" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"net/http/httptest" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"net/url" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				"testing" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				. "github.com/smartystreets/goconvey/convey" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			type user struct { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				Username string `schema:"username"` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				Password string `schema:"password"` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			func (self *user) Validate() error { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if self.Username == "" || self.Password == "" { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return errors.New("username/password can not be empty") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				if len(self.Password) < 8 { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return errors.New("password must be greater than 8bits") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				return nil | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			func TestParse(t *testing.T) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				app := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					var form user | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if err := Parse(r, &form); err == nil { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						w.WriteHeader(http.StatusAccepted) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						io.WriteString(w, "uid") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					} else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						w.WriteHeader(http.StatusBadRequest) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						io.WriteString(w, err.Error()) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				Convey("rex.form.Parse", t, func() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					values := url.Values{} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					values.Set("username", "username") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					values.Set("password", "password") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					request, _ := http.NewRequest("POST", "/", bytes.NewBufferString(values.Encode())) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					request.Header.Set("Content-Type", "application/x-www-form-urlencoded") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					response := httptest.NewRecorder() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					app.ServeHTTP(response, request) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					So(response.Code, ShouldEqual, http.StatusAccepted) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					values.Set("password", "7") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					request, _ = http.NewRequest("POST", "/", bytes.NewBufferString(values.Encode())) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					response = httptest.NewRecorder() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					app.ServeHTTP(response, request) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					So(response.Code, ShouldEqual, http.StatusBadRequest) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} |