docs: improve webtest
	
		
			
	
		
	
	
		
			
				
	
				continuous-integration/drone the build failed
				
					Details
				
			
		
	
				
					
				
			
				
	
				continuous-integration/drone the build failed
				
					Details
				
			
		
	This commit is contained in:
		
							parent
							
								
									d89da311b1
								
							
						
					
					
						commit
						dbedcfa8f6
					
				|  | @ -17,6 +17,7 @@ import ( | |||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	// DBConnection - url to database on setting up default WebService for webtest
 | ||||
| 	DBConnection = "user=root password=root dbname=defaultdb host=localhost port=26257 sslmode=disable" | ||||
| ) | ||||
| 
 | ||||
|  | @ -28,11 +29,13 @@ type testServer struct { | |||
| 	lastCookies []*http.Cookie | ||||
| } | ||||
| 
 | ||||
| // Login Request format (maybe just internal usage)
 | ||||
| type Login struct { | ||||
| 	Username string `json:"username"` | ||||
| 	Password string `json:"password"` | ||||
| } | ||||
| 
 | ||||
| // New starts WebService for testing
 | ||||
| func New(assert *assert.Assertions) *testServer { | ||||
| 	// db setup
 | ||||
| 	dbConfig := database.Database{ | ||||
|  | @ -68,33 +71,37 @@ func New(assert *assert.Assertions) *testServer { | |||
| 		assert: assert, | ||||
| 	} | ||||
| } | ||||
| func (this *testServer) DatabaseMigration(f func(db *database.Database)) { | ||||
| 	f(this.db) | ||||
| 	this.db.MigrateTestdata() | ||||
| 
 | ||||
| // DatabaseMigration set up a migration on webtest WebService
 | ||||
| func (s *testServer) DatabaseMigration(f func(db *database.Database)) { | ||||
| 	f(s.db) | ||||
| 	s.db.MigrateTestdata() | ||||
| } | ||||
| func (this *testServer) Request(method, url string, body interface{}, expectCode int, jsonObj interface{}) { | ||||
| 
 | ||||
| // Request sends a request to webtest WebService
 | ||||
| func (s *testServer) Request(method, url string, body interface{}, expectCode int, jsonObj interface{}) { | ||||
| 	var jsonBody io.Reader | ||||
| 	if body != nil { | ||||
| 		if strBody, ok := body.(string); ok { | ||||
| 			jsonBody = strings.NewReader(strBody) | ||||
| 		} else { | ||||
| 			jsonBodyArray, err := json.Marshal(body) | ||||
| 			this.assert.Nil(err, "no request created") | ||||
| 			s.assert.Nil(err, "no request created") | ||||
| 			jsonBody = bytes.NewBuffer(jsonBodyArray) | ||||
| 		} | ||||
| 	} | ||||
| 	req, err := http.NewRequest(method, url, jsonBody) | ||||
| 	this.assert.Nil(err, "no request created") | ||||
| 	if len(this.lastCookies) > 0 { | ||||
| 		for _, c := range this.lastCookies { | ||||
| 	s.assert.Nil(err, "no request created") | ||||
| 	if len(s.lastCookies) > 0 { | ||||
| 		for _, c := range s.lastCookies { | ||||
| 			req.AddCookie(c) | ||||
| 		} | ||||
| 	} | ||||
| 	w := httptest.NewRecorder() | ||||
| 	this.gin.ServeHTTP(w, req) | ||||
| 	s.gin.ServeHTTP(w, req) | ||||
| 
 | ||||
| 	// valid statusCode
 | ||||
| 	this.assert.Equal(expectCode, w.Code, "expected http status code") | ||||
| 	s.assert.Equal(expectCode, w.Code, "expected http status code") | ||||
| 	if expectCode != w.Code { | ||||
| 		fmt.Printf("wrong status code, body:%v\n", w.Body) | ||||
| 		return | ||||
|  | @ -103,14 +110,14 @@ func (this *testServer) Request(method, url string, body interface{}, expectCode | |||
| 	if jsonObj != nil { | ||||
| 		// fetch JSON
 | ||||
| 		err = json.NewDecoder(w.Body).Decode(jsonObj) | ||||
| 		this.assert.Nil(err, "decode json") | ||||
| 		s.assert.Nil(err, "decode json") | ||||
| 	} | ||||
| 
 | ||||
| 	result := w.Result() | ||||
| 	if result != nil { | ||||
| 		cookies := result.Cookies() | ||||
| 		if len(cookies) > 0 { | ||||
| 			this.lastCookies = cookies | ||||
| 			s.lastCookies = cookies | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue