// currently blocks forever? func TestLocationAgent(t *testing.T) { t.Skip() db, _, s := testInstance(t, context.Background()) defer s.Close() u, cred := testUser(t, db) t.Log("Opening websocket") serverURL := s.URL origin := serverURL wsURL := strings.Replace(serverURL, "http", "ws", 1) params := url.Values{} params.Set("public", cred.Public) params.Set("private", cred.Private) params.Set("kind", models.ProfileKind.String()) wsURL += routes.RecordChanges + "?" + params.Encode() ws, err := websocket.Dial(wsURL, "", origin) if err != nil { t.Fatal(err) } defer ws.Close() t.Log("Websocket openened") t.Log("Creating new location update") var loc *models.Location if _, loc, err = event.LocationUpdate(db, u, 50, 50, 50); err != nil { t.Fatal(err) } t.Log("Created location update") time.Sleep(500 * time.Millisecond) log.Print("h") var ct transfer.ChangeTransport if err := websocket.JSON.Receive(ws, &ct); err != nil { t.Fatal(err) } log.Print("h") tc := transfer.ChangeFrom(&ct, models.ModelFor(ct.RecordKind)) if tc.ChangeKind != data.Update { t.Fatal("Expected ChangeKind to be Update") } if tc.Record.(*models.Profile).LocationId != loc.Id { t.Fatal("Expected profile to have new location's id") } }
func TestRecordChanges(t *testing.T) { ctx, cancelAllConnections := context.WithCancel(context.Background()) defer cancelAllConnections() db, _, s := testInstance(t, ctx) defer s.Close() user, cred := testUser(t, db) serverURL := s.URL origin := serverURL wsURL := strings.Replace(serverURL, "http", "ws", 1) params := url.Values{} params.Set("public", cred.Public) params.Set("private", cred.Private) params.Set("kind", models.TaskKind.String()) wsURL += routes.RecordChanges + "?" + params.Encode() t.Logf("Constructed URL: %s", wsURL) t.Log("Opening websocket") ws, err := websocket.Dial(wsURL, "", origin) if err != nil { t.Fatal(err) } defer ws.Close() t.Log("Websocket openened") time.Sleep(500 * time.Millisecond) t.Log("Creating task") taskName := "task to retreive" task := models.NewTask() task.SetID(db.NewID()) task.CreatedAt = time.Now() task.OwnerId = user.Id task.Name = taskName task.UpdatedAt = time.Now() if err := db.Save(task); err != nil { t.Fatal(err) } t.Log("Task created") var ct transfer.ChangeTransport if err := websocket.JSON.Receive(ws, &ct); err != nil { t.Fatal(err) } tc := transfer.ChangeFrom(&ct, models.ModelFor(ct.RecordKind)) t.Logf("Task Change Recieved: %++v", tc) t.Log("Cancelling the connection") cancelAllConnections() t.Log("\tcancelled") if tc.ChangeKind != data.Update { t.Fatal("Expected ChangeKind to be Update") } if tc.Record.(*models.Task).Name != taskName { t.Fatalf("Expected task name to be: '%s'", taskName) } }